Każdy, kto uaktualnił lub zainstalował Ubuntu 16.04 (znany również jako Ubuntu Xenial xerus) zauważył, że niektóre stare usługi przestały działać. Ten problem jest znany z wersji 15.04, ale skupię się na powyższej wersji.
Tak było w moim przypadku z MongoDB. Krótko mówiąc, Ubuntu zmieniło się z upstart na systemd. Jednym z powszechnych rozwiązań tych problemów jest powrót do nowych użytkowników. Nie uważam tej opcji za realne rozwiązanie, na pewno nie na dłuższą metę.
Prawdziwym rozwiązaniem (IMHO) tego problemu jest napisanie skryptu systemd, który uruchomi MongodDB. Niestety, chłopaki z MongoDB jeszcze go nie dostarczyli.
Musiałem więc napisać jedną od podstaw. Aby utworzyć własny, wykonaj następujące kroki:
- przełącz się na roota za pomocą
sudo su
lub użyj sudo we wszystkich poniższych krokach.
-
utwórz skrypt usługi (w tym przykładzie nazwa usługi to Mongodb)
nano /lib/systemd/system/mongodb.service
-
Zawartość pliku powinna być
[Unit] Description=MongoDB Database Service Wants=network.target After=network.target [Service] ExecStart=/usr/bin/mongod --config /etc/mongod.conf ExecReload=/bin/kill -HUP $MAINPID Restart=always User=mongodb Group=mongodb StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target
Możesz również pobrać plik tutaj:mongodb.service
Oto krótki opis ważnych pól:
ExecStart - Czy polecenie do uruchomienia. Mongo instaluje się w /usr/bin, a plik konfiguracyjny jest zapisywany w /etc
Użytkownik - Uid procesu mongod.
Grupa - Gid procesu mongodów. Zauważ, że użytkownik i grupa są tworzone przez instalację.
Teraz, aby rozpocząć mongodb:
sudo systemctl start mongodb
Aby zatrzymać usługę mongodb, użyj:
sudo systemctl stop mongodb
Aby włączyć mongodb przy starcie
sudo systemctl enable mongodb.service
Jeśli chcesz odświeżyć usługi, użyj:
sudo systemctl daemon-reload