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 mongod
bei 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.conf
kann ich sehen:
start on runlevel [2345]
stop on runlevel [!2345]
Wie kann sichergestellt werden, dass mongod
beim Systemstart in 16.04 richtig gestartet wird?
Ich habe gelesenDas, und schaute hinein /etc/rc2.d
und 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 mongodb
wird 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 me
und 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:
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