6 votes

Quelle est la manière correcte de s'assurer que `mongod` démarre au démarrage du système dans 16.04 ?

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

mongodb 1:2.6.10-0ubuntu1

Je crois este contient actuellement MongoDB 2.6.10.

J'exécute une application sur une configuration apache2 localhost et je dois lancer mongod manuellement à chaque fois que le système démarre avec :

mongod

Je veux qu'il démarre automatiquement.

J'ai rencontré deux méthodes principales pour y parvenir :

update-rc.d mongodb defaults

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

ce qui entraîne :

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 à la modification du "fichier de configuration MongoDB", mais je ne suis pas sûr de ce à quoi cela se réfère car je vois des 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 suis pas sûr de ce qu'il faut y changer.

En /etc/init/mongodb.conf Je peux voir :

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

Quelle est la bonne façon de s'assurer mongod démarre au démarrage du système dans la version 16.04 ?

J'ai lu este et a regardé dans /etc/rc2.d et peut voir :

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

Mise à jour :

Après la suggestion d'exécution :

sudo systemctl enable mongodb

et ensuite redémarrer, exécuter systemctl status mongodb retours :

* 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 permissions

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

6voto

user367134 Points 365

Installation de

C'est la méthode que j'ai fini par utiliser (d'après le commentaire de l'utilisateur Adam C concernant l'utilisation d'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

Puis j'ai dû faire un fichier de service, tu vois :

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

Et modifier le chemin dans ce fichier de service de :

/etc/mongodb.conf 

à :

/etc/mongod.conf

Et ensuite faire en sorte que mongodb démarre 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'ancien MongoDB

Avant J'ai fait cela, mais j'ai dû 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/

0voto

Pendant que vous développez, vous pouvez aussi parfois vouloir l'inverse : avoir plusieurs instances locales séparables que vous démarrez individuellement, plutôt qu'une installation globale...

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

0voto

Milar Points 156

Pour moi, ça marche juste en faisant sudo systemctl enable mongod

0voto

tim Points 101

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

chown mongodb:mongodb /var/lib/mongodb

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X