J'utilise Fedora 20 et j'ai installé MongoDB selon le Guide d'installation de Red Hat sur la documentation officielle. J'ai pu exécuter le démon mongod
en tant que service sans erreur la toute première fois, mais lorsque j'ai arrêté ma machine et que je suis revenu, le service a refusé de démarrer en raison d'un échec.
Dans mon journal, répertorié après l'exécution réussie, je vois ceci:
***** SERVER RESTARTED *****
ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory
Si j'essaie de démarrer mongod
ou d'exécuter mongod --repair
manuellement, j'obtiens ce message lors d'un échec de démarrage:
ERROR: dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.
C'est étrange étant donné que dans mon fichier de configuration dans /etc/mongod.conf
, les paramètres du chemin d'accès à la base de données sont les suivants:
dbpath=/var/lib/mongo
Enfin, si j'exécute cette commande:
mongod --dbpath /var/lib/mongo
Le démon démarre très bien. Toutefois, je ne parviens pas à reproduire ce comportement sans erreur pour démarrer un service.
Quelqu'un peut-il me dire exactement ce qui ne va pas et comment commencer à exécuter mongod
en tant que service?
ÉDITER
Je reçois ce message si je lance mongod --config /etc/mongod.conf
:
about to fork child process, waiting until server is ready for connections. forked process: 2702 ERROR: child process failed, exited with error number 1
Le /var/run/mongodb
le répertoire n'existait pas, donc je l'ai créé et attribué à l'utilisateur mongod. Malheureusement, cela ne fait pas beaucoup de différence.
Ma /var/log/mongodb/mongod.log
affiche ce message:
[initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /var/lib/mongo/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Ce qui a fonctionné pour moi sur Fedora 20: nous devons créer le répertoire temp à chaque démarrage, et cela est géré par systemd-tmpfiles. Donc, créez un fichier /lib/tmpfiles.d/mongodb.conf et mettez une ligne dedans:
d /var/run/mongodb 0755 mongod mongod
Cela semble le gérer lors des redémarrages; si vous ne voulez pas redémarrer tout de suite, vous pouvez l'exécuter avec:
Sudo systemd-tmpfiles --create mongodb.conf
(Voir les pages de manuel pour les fichiers systemd-tmp)
J'ai le même problème, je l'ai résolu temporairement, désactivant SELinux, redémarré la machine, éliminé mongod.lock:
#rm /var/lib/mongo/mongod.lock
En créant le fichier /var/run/mongodb/mongo.pid (comme mentionné dans le fichier de configuration /etc/mongod.conf):
#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid
et donner 777 autorisations:
#chmod 777 /var/run/mongodb/mongod.pid
et commencer mongo:
#service mongod start
Mais le problème persiste après le redémarrage de la machine. Le dossier et le fichier disparaissent.
J'ai passé un certain temps à examiner cela, et il semble que le dossier pid et les autorisations de fichier ne fonctionnent pas avec le démon par défaut.
La solution la plus simple que j'ai rencontrée est de désactiver le fichier pid en mettant simplement un # devant la ligne dans le fichier de configuration.
vi /etc/mongod.conf
recherchez la ligne qui indique pidfilepath =/var/run/mongodb/mongod.pid et modifiez-la en conséquence.
# pidfilepath=/var/run/mongodb/mongod.pid
Pour plus d'informations sur les commentaires, vérifiez ici. http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath
Si vous démarrez Mongod en tant que service en utilisant:
Sudo service mongod start
Assurez-vous que les répertoires définis pour logpath, dbpath et pidfilepath dans votre mongod.conf existent et appartiennent à mongod: mongod.
J'avais le même problème lors de l'exécution de mongodb 3.0.4 sur OpenSuse 13.2, et j'ai trouvé que le répertoire mongod sous/var/run était manquant. Si j'ai créé le répertoire manuellement, il disparaîtrait après un redémarrage.
Je l'ai résolu en ajoutant les lignes suivantes à mon script de démarrage /etc/init.d/mongod:
mkdir -p /var/run/mongod
chown $MONGO_USER:$MONGO_GROUP /var/run/mongod
Commentez sous la ligne de votre fichier "mongo.conf".
pidfilepath =/var/run/mongodb/mongod.pid
Cela a fonctionné pour moi dans Ubuntu:
Sudo kill $(Sudo lsof -t -i:27017)
Sudo rm -rf /tmp/mongodb-27017.sock
Sudo rm -f /var/lib/mongo/mongod.lock
Sudo rm -f /var/run/mongodb/mongod.pid
Sudo mkdir -p /var/run/mongodb/
Sudo touch /var/run/mongodb/mongod.pid
Sudo chown -R mongodb:mongodb /var/run/mongodb/
Sudo chown mongodb:mongodb /var/run/mongodb/mongod.pid
Sudo service mongod start
commandes suivantes résolues pour cent os
Erreur [~ # ~] [~ # ~] :
service mongod status
Error starting mongod. /var/run/mongodb/mongod.pid exists
FIXE PAR:
rm /var/lib/mongo/mongod.lock
chown -R mongod:mongod /var/log/mongodb/
chown -R mongod:mongod /var/run/mongodb/
chown -R mongod:mongod /var/lib/mongo/
chmod 777 /var/run/mongodb/mongod.pid
mongod --dbpath /var/lib/mongo
Nous devons créer l'emplacement temp dir de pidfile /var/run/mongodb
qui est géré par systemd-tmpfiles. Donc, créez un fichier /lib/tmpfiles.d/mongodb.conf en tant que root:
lnx #> Sudo su
lnx #> cd /lib/tmpfiles.d
lnx #> echo "d/var/run/mongodb 0755 mongod mongod"> mongodb.conf
Ensuite, redémarrez ou exécutez cette commande pour activer ce répertoire temporaire:
lnx #> Sudo systemd-tmpfiles --create mongodb.conf
Démarrer le service Mongod:
lnx #> Sudo systemctl start mongod.service
Bibliographie: Fedora et Mongodb · l33tsource
Je viens de rencontrer un problème similaire sur Ubuntu. Rencontré presque tous les conseils d'ERREUR, comme
child process failed, exited with error number 1
ou child process failed, exited with error number 100
ou [signalProcessingThread] got signal 2 (Interrupt: 2), will terminate after current cmd ends
Plusieurs fois, je supprime le Mongodb et j'essaie de réinstaller, mais le problème demeure ...
Enfin, je suis arrivé à cette façon: sauvegardez d'abord vos données, puis supprimez Mongodb avec
#Sudo apk-get autoremove mongodb-org
Découvrez tous les fichiers liés à mongodb:
/#find -name mongo*
Supprimez-les tous avec "rm" ou "rmdir", y compris les packages dans/var/cache/... et tout.
Répétez ensuite l'installation comme la première fois:
#echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
#Sudo apt-get update
#Sudo apt-get install -y mongodb-org
Il fonctionnera à nouveau.
j'ai rencontré le même problème, lorsque je modifie mon mongod.conf comme suit et que le problème est résolu ~
port=27017
dbpath=/usr/local/mongodb/data/db/
logpath=/usr/local/mongodb/logs
fork = true
conseils: logpath est le fichier journal et non un dossier.