Jeder, der Ubuntu 16.04 (auch als Ubuntu Xenial xerus bekannt) aktualisiert oder installiert hat, hat festgestellt, dass einige der alten Dienste nicht mehr ausgeführt werden. Dieses Problem ist seit Version 15.04 bekannt, aber ich werde mich auf die obige Version konzentrieren.
Das war mein Fall mit MongoDB. Um es kurz zu machen, Ubuntu wechselte von Emporkömmling zu Systemd. Eine gängige Lösung für diese Probleme besteht darin, wieder auf Emporkömmling umzuschalten. Ich halte diese Option nicht für eine wirkliche Lösung, schon gar nicht auf lange Sicht.
Eine echte Lösung ( IMHO ) für das Problem besteht darin, ein systemd-Skript zu schreiben, das MongodDB startet. Leider mussten die Leute von MongoDB noch einen liefern.
Also musste ich einen von Grund auf neu schreiben. Gehen Sie folgendermaßen vor, um eine eigene zu erstellen:
- Wechseln Sie mit
sudo su
zu root
oder verwenden Sie sudo für alle folgenden Schritte.
-
Erstellen Sie ein Dienstskript (in diesem Beispiel lautet der Name des Dienstes Mongodb)
nano /lib/systemd/system/mongodb.service
-
Dateiinhalt sollte
sein[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
Sie können die Datei auch hier herunterladen:mongodb.service
Hier ist eine kurze Beschreibung der wichtigen Felder:
ExecStart - Ist der auszuführende Befehl. Mongo installiert sich selbst unter /usr/bin und die Konfigurationsdatei wird unter /etc
User geschrieben - Die UID des Mongod-Prozesses.
Gruppe - Die Gid des Mongod-Prozesses. Beachten Sie, dass der Benutzer und die Gruppe durch die Installation erstellt werden.
Starten Sie nun mongodb:
sudo systemctl start mongodb
Um den Mongodb-Dienst zu stoppen, verwenden Sie:
sudo systemctl stop mongodb
Mongodb beim Start aktivieren
sudo systemctl enable mongodb.service
Wenn Sie die Dienste aktualisieren müssen, verwenden Sie:
sudo systemctl daemon-reload