Každý, kdo upgradoval nebo nainstaloval Ubuntu 16.04 (také známý jako Ubuntu Xenial xerus), si všiml, že některé ze starých služeb přestaly běžet. Tento problém je znám z verze 15.04, ale já se zaměřím na výše uvedenou verzi.
To byl můj případ s MongoDB. Abychom udělali dlouhý příběh, krátký, Ubuntu se posunulo z upstart na systemd. Jedním z běžných řešení těchto problémů je přejít zpět na upstart. Tuto možnost nepovažuji za skutečné řešení, rozhodně ne z dlouhodobého hlediska.
Skutečným řešením (IMHO) problému je napsat systemd skript, který spustí MongodDB. Bohužel kluci z MongoDB ještě jeden nedodali.
Takže jsem musel napsat jeden od začátku. Chcete-li vytvořit vlastní, postupujte takto:
- přepněte na root pomocí
sudo su
nebo použijte sudo pro všechny následující kroky.
-
vytvořte skript služby (v tomto příkladu je název služby Mongodb)
nano /lib/systemd/system/mongodb.service
-
Obsah souboru by měl být
[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
Soubor si také můžete stáhnout zde:mongodb.service
Zde je stručný popis důležitých polí:
ExecStart - Je příkaz ke spuštění. Mongo se nainstaluje do /usr/bin a konfigurační soubor je zapsán v /etc
Uživatel - Uid procesu mongoda.
Skupina - Gid mongodského procesu. Pamatujte, že uživatel a skupina jsou vytvořeni instalací.
Nyní ke spuštění mongodb:
sudo systemctl start mongodb
Chcete-li zastavit službu mongodb, použijte:
sudo systemctl stop mongodb
Chcete-li povolit mongodb při spuštění
sudo systemctl enable mongodb.service
Pokud potřebujete obnovit služby, použijte:
sudo systemctl daemon-reload