Wie kann sichergestellt werden, dass „mongod“ beim Systemstart in 16.04 gestartet wird?

Wie kann sichergestellt werden, dass „mongod“ beim Systemstart in 16.04 gestartet wird?

Ich habe MongoDB über das Software Center in Ubuntu 16.04 installiert:

mongodb 1:2.6.10-0ubuntu1

Ich glaubeDasenthält derzeit MongoDB 2.6.10.

Ich führe eine Anwendung auf einem Apache2-Localhost-Setup aus und muss sie mongodbei jedem Systemstart manuell mit Folgendem starten:

mongod

Ich möchte, dass es automatisch startet.

Ich bin auf zwei Hauptmethoden gestoßen, um dies zu tun:

update-rc.d mongodb defaults

aus: https://askubuntu.com/a/89914/367134

was dazu führt:

update-rc.d mongodb defaults
insserv: fopen(.depend.stop): Permission denied

Dies hat jedoch keinen Fehler verursacht:

sudo update-rc.d mongodb defaults

Ich habe auch einige Hinweise zum Bearbeiten der „MongoDB-Konfigurationsdatei“ gesehen, bin mir aber nicht sicher, worauf sich das bezieht, da ich Konfigurationsdateien an mehr als einem Speicherort sehe:

  • /etc/mongodb.conf
  • /etc/init/mongodb.conf
  • /etc/init.d/mongodb

Und wenn ich erst einmal in der richtigen Datei bin, bin ich nicht sicher, was ich dort ändern soll.

Darin /etc/init/mongodb.confkann ich sehen:

start on runlevel [2345]
stop on runlevel [!2345]

Wie kann sichergestellt werden, dass mongodbeim Systemstart in 16.04 richtig gestartet wird?

Ich habe gelesenDas, und schaute hinein /etc/rc2.dund konnte sehen:

S01mongodb@                       --> /etc/init.d/mongodb

Aktualisieren:

Nach dem Ausführen des Vorschlags:

sudo systemctl enable mongodb

und dann neu starten. Beim Ausführen systemctl status mongodbwird Folgendes zurückgegeben:

* mongodb.service - An object/document-oriented database
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2016-04-18 23:42:28 AEST; 7min ago
     Docs: man:mongod(1)
  Process: 655 ExecStart=/usr/bin/mongod --config /etc/mongodb.conf (code=exited, status=100)
 Main PID: 655 (code=exited, status=100)

Apr 18 23:42:27 me-comp systemd[1]: Started An object/document-oriented database
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Main process exited, code=exited, status=100/n/a
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Unit entered failed state.
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Failed with result 'exit-code'.  

Fehlerbehebung bei Berechtigungen

/var/lib/mongodb= drwxr-xr-x mongodb mongodb.
/var/log/mongodb= drwxr-xr-x mongodb mongodb.
/var/log/mongodb/mongodb.log= -rw-r--r-- mongodb nogroup.
/var/log/mongodb/mongod.log= -rw-r--r-- mongodb mongodb.
/data/db/mongod.lock= -rwxrwxr-x me meund 0 Bytes.
/data= drwxr-xr-x root root.
/data/db= drwxr-xr-x me root.

Inhalt der Konfigurationsdatei

/etc/mongodb.conf:

# Where to store the data.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongodb.log

logappend=true

bind_ip = 127.0.0.1
#port = 27017 ...

Antwort1

Installieren

Dies ist die Methode, die ich letztendlich verwendet habe (aus dem Kommentar des Benutzers Adam C bezüglich der Verwendung einer aktuelleren Version von MongoDB). Bei mir hat es funktioniert, aber ich bin kein Experte auf diesem Gebiet.

https://askubuntu.com/a/757385/367134

Dann musste ich eine Servicedatei erstellen, siehe:

https://askubuntu.com/a/694226/367134

Und bearbeiten Sie den Pfad in dieser Servicedatei von:

/etc/mongodb.conf 

Zu:

/etc/mongod.conf

Und starten Sie MongoDB dann beim Systemstart mit:

sudo systemctl enable mongodb

sehen:

https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units

Jetzt wird MongoDB beim Systemstart um 16.04 gestartet.

Deinstallieren des alten MongoDB

VorIch habe das getan, allerdings musste ich die vorhandenen Installationen und Verzeichnisse entfernen, was ich so gemacht habe (Schritte hauptsächlich vonhttps://askubuntu.com/a/497144/367134):

# go to /etc/apt/sources.list.d and remove any mongodb lists, then:

# sanity check - see what is installed
sudo dpkg -l | grep mongo

# remove all packages 
sudo apt-get remove mongodb* --purge
sudo apt-get autoremove

# remove old directories
sudo rm -r -f /var/lib/mongodb/
sudo rm -r -f /var/log/mongodb/

Antwort2

Während Sie entwickeln, möchten Sie vielleicht manchmal auch das Gegenteil: mehrere lokal trennbare Instanzen haben, die Sie einzeln starten, statt einer globalen Installation ...

mongod --dbpath ./mongo_db_data/ --logpath ./mongo_logs/mongodb.log --port 12345

Antwort3

Für mich funktioniert einfachsudo systemctl enable mongod

Antwort4

Bei mir liegt es an der falschen Berechtigung des Datenbankpfads.

chown mongodb:mongodb /var/lib/mongodb

verwandte Informationen