web-dev-qa-db-fra.com

Quelle est la bonne façon de s’assurer que `mongod` démarre au démarrage du système en 16.04?

J'ai installé MongoDB via le centre logiciel Ubuntu 16.04:

mongodb 1:2.6.10-0ubuntu1

Je crois que this contient actuellement MongoDB 2.6.10.

J'exécute une application sur la configuration d'Apache2 localhost et dois démarrer mongod chaque fois que le système démarre avec:

mongod

Je veux que ça démarre automatiquement.

J'ai rencontré deux méthodes principales pour le faire:

update-rc.d mongodb defaults

à partir de: https://askubuntu.com/a/89914/367134

qui se traduit par:

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

Mais cela n'a pas produit d'erreur:

Sudo update-rc.d mongodb defaults

J'ai également vu quelques références pour éditer le "fichier de configuration MongoDB", mais je ne suis pas sûr de savoir à quoi cela correspond, car je peux voir les fichiers de configuration à plusieurs endroits:

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

Et, une fois dans le bon fichier, je ne sais pas quoi changer.

Dans /etc/init/mongodb.conf je peux voir:

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

Quelle est la bonne façon d’assurer que mongod démarre au démarrage du système en 16.04?

J'ai lu this et j'ai regardé dans /etc/rc2.d et je peux voir:

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

Mise à jour:

Après avoir lancé la suggestion:

Sudo systemctl enable mongodb

puis en redémarrant, exécuter systemctl status mongodb renvoie:

* 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'.  

Dépannage des autorisations

/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 et 0 octet.
/data = drwxr-xr-x root root.
/data/db = drwxr-xr-x me root.

Contenu du fichier de configuration

/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 ...
6
user1063287

Installation

C'est la méthode que j'ai finalement utilisée (d'après le commentaire de l'utilisateur Adam C: utiliser une version plus récente de mongodb). Cela a fonctionné pour moi mais je ne suis pas une autorité en la matière.

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

Ensuite, je devais créer un fichier de service, voir:

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

Et éditez le chemin dans ce fichier de service à partir de:

/etc/mongodb.conf 

à:

/etc/mongod.conf

Et faites ensuite mongodb démarrer au démarrage du système avec:

Sudo systemctl enable mongodb

voir:

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

Maintenant, mongodb démarre au démarrage du système 16.04.

Désinstallation de l'ancienne MongoDB

Avant toutefois, je devais supprimer les installations et les répertoires existants, ce que j’ai fait comme ceci (étapes principalement à partir de https://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/
4
user1063287

Pour moi, c'est à cause de la mauvaise permission de db path. juste

chown mongodb:mongodb /var/lib/mongodb
0
tim

Pendant que vous développez, vous voudrez peut-être aussi parfois l’inverse: avoir plusieurs instances séparables locales que vous démarrez individuellement, plutôt qu’une installation globale ...

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

Pour moi, je ne fais que Sudo systemctl enable mongod

0
Pedro Vagner