it-swarm.com.de

Laufen Mongodb auf Ubuntu 16.04 LTS

Wie kann ich Mongodb als Dienst auf Ubuntu 16.04 LTS ausführen? Vor ein paar Tagen hatte ich meinen Server auf Ubuntu 16.04 aktualisiert. Ich habe festgestellt, dass mein MongoDB-Dienst beim Neustart nicht gestartet wird. Versucht zu benutzen

Sudo startet mongod

Hat den Trick nicht getan. Hat jemand eine Idee, wie man das löst?

38
Sagi Forbes

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 ab Version 15.04 bekannt, aber ich werde mich auf die obige Version konzentrieren.

So war mein Fall mit MongoDB. Um es kurz zu machen, Ubuntu wechselte von upstart zu systemd. Eine gebräuchliche Lösung für diese Probleme ist die Rückkehr zum Start. Ich halte diese Option nicht für eine echte Lösung, schon gar nicht auf lange Sicht.

Eine echte Lösung (IMHO) für das Problem besteht darin, ein systemd-Skript zu schreiben, mit dem MongodDB gestartet wird. Leider mussten die MongoDB-Jungs noch einen liefern.

Also musste ich eine von Grund auf neu schreiben. Führen Sie die folgenden Schritte aus, um einen eigenen zu erstellen:

  1. mit auf root wechseln
     Sudo su 
    

oder verwenden Sie Sudo für alle folgenden Schritte.

  1. ein Service-Skript erstellen (in diesem Beispiel heißt der Service Mongodb)

     nano /lib/systemd/system/mongodb.service
    
  2. Dateiinhalt sollte sein

     [Unit] 
     Description = MongoDB-Datenbankdienst 
     Wants = network.target 
     After = network.target 
     
     [Service ] 
     ExecStart =/usr/bin/mongod --config /etc/mongod.conf[.____.)ExecReload=/bin/kill -HUP $ MAINPID 
     Restart = always 
     Benutzer = mongodb 
     Gruppe = mongodb 
     StandardOutput = syslog 
     StandardError = syslog 
     
     [Install] 
     WantedBy = multi- user.target 
    

Sie können die Datei auch hier herunterladen: mongodb.service
Hier eine kurze Beschreibung der wichtigen Felder:
ExecStart - Soll der Befehl ausgeführt werden. Mongo installiert sich unter/usr/bin und die Konfigurationsdatei wird unter/etc geschrieben
Benutzer - Die Uid des Mongod-Prozesses.
Gruppe - Das Geheimnis des Mongod-Prozesses. Beachten Sie, dass der Benutzer und die Gruppe von der Installation erstellt werden.

Nun, um Mongodb zu starten:

Sudo systemctl start mongodb

So stoppen Sie die Verwendung des Mongodb-Dienstes:

Sudo systemctl stop mongodb

So aktivieren Sie Mongodb beim Start

Sudo systemctl enable mongodb.service

Wenn Sie die Dienste aktualisieren müssen, verwenden Sie:

 Sudo systemctl daemon-reload
77
Sagi Forbes

Die neueste Version von MongoDB macht die meisten Dinge außer einer Sache für den Moment. Nach der Installation von MongoDB auf Ubuntu 16.04.x, führen Sie die Befehle wie folgt aus:

$ Sudo systemctl enable mongod.service
$ Sudo systemctl daemon-reload

Jetzt startet mongod höchstwahrscheinlich bei jedem Start automatisch.


Diese Lösung funktioniert auch, wenn dieser Fehler auftritt:

Fehler beim Starten von mongod.service: Einheit mongod.service nicht gefunden.

Nachdem Sie die obigen Befehle ausgeführt haben, funktionieren die folgenden Befehle:

$ Sudo service mongod start
$ mongo

Ebenso müssen alle installierten Dienste aktiviert sein, um ausgeführt werden zu können. Beispielsweise wird nach der Installation von Ops Manager (a.k.a MMS) in der Dokumentation angegeben, dass der folgende Befehl ausgeführt werden soll.

$ Sudo systemctl start mongodb-mms.service

Wahrscheinlich startet Ubuntu den Dienst nicht. Weil es noch nicht aktiviert ist. Um es zu aktivieren, führen Sie einfach den folgenden Befehl aus:

$ Sudo systemctl enable mongodb-mms.service
$ Sudo systemctl daemon-reload

Dann versuchen Sie den Dienst zu starten:

$ Sudo systemctl enable mongodb-mms.service

Das ist alles...

35
efkan

Für Leute, die eine frische Installation wünschen

Ich habe 1 Stunde lang damit zu kämpfen. Dann fand ich diese Seite Die Installation ist so einfach wie:

Sudo apt-get update
Sudo apt-get install mongodb

Dann überprüfen Sie, ob alles funktioniert:

Sudo service mongodb status

Lassen Sie mich wissen, ob das bei Ihnen funktioniert!

23
Nicola Pedretti

Die Pakete für 3.2+ enthalten Upstart-Skripte.

Befolgen Sie zunächst die offiziellen Anweisungen zur Installation :

# If you installed the ubuntu package, remove it, if not skip to key import
Sudo apt-get remove mongodb
Sudo apt-get autoremove
# import key
Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# add trusty repos
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
# update apt
Sudo apt-get update
# install the package
Sudo apt-get install -y mongodb-org

Dann demaskieren Sie die mongodb.service job (und aktivieren und starten Sie es). Ich glaube, es wurde maskiert, weil das Paket auch einen Startjob enthält, sodass Sie nicht möchten, dass beide gestartet werden. In unserem Fall ist dies jedoch eindeutig das, was wir wollen.

Sudo systemctl unmask mongodb
Sudo service mongod start

Verweise:

relevantes JIRA-Problem

verwandte Frage zu Ask Ubunt

20
Hut8
Sudo systemctl start mongod

hat bei mir unter Ubuntu Linux 16.04 funktioniert

0
Saunved Mutalik