69 votes

Impossible de démarrer MongoDB en tant que service

J'ai développé pour MongoDB depuis quelques mois maintenant et je voudrais l'installer en tant que service sur mon ordinateur Windows 7 Enterprise. Voici la commande que j'ai exécutée pour créer le service :

"D:\Milvia Systems\Development\MongoDB\mongod.exe" --logpath "D:\Milvia Systems\Development\MongoDB\logs\DBLog.log" --logappend --dbpath "D:\Milvia Systems\Development\MongoDB\db" -vvv --reinstall

Cependant, chaque fois que j'utilise net start "MongoDB" ou le Panneau de contrôle des services, je reçois l'erreur suivante :

Erreur 1053 : Le service n'a pas répondu à la demande de démarrage ou de contrôle de manière opportune.

Environnement : Windows 7 Enterprise 64 bits MongoDB : 1.6.3 version du fichier pdfile 4.5

3 votes

J'ai eu le même problème lors de l'installation de MongoDB en tant que service. Le problème était que j'avais utilisé un chemin relatif pour le fichier de configuration.

2 votes

Vous avez besoin de privilèges administratifs pour cela

150voto

Ciaran Archer Points 5527

Avez-vous vérifié votre journalisation pour voir le vrai problème?

Je suggère d'extraire l'installation de Mongo dans c:\mongodb.

Créez les répertoires c:\mongodb\logs et c:\mongodb\data\db.

Ensuite, parcourez le répertoire c:\mongodb\bin et exécutez la commande suivante pour supprimer le service (si vous l'avez installé!):

mongod --remove

Ensuite, installez le service en spécifiant les répertoires de journalisation et de données:

mongod --logpath c:\mongodb\logs\mongo.log --dbpath c:\mongodb\data\db --directoryperdb --install

En cas de problème au démarrage du service, vous devriez voir la raison dans le fichier de journalisation spécifié.

Plus d'informations ici.

0 votes

Voici le journal : Mar Jan 11 11:03:11 dbexit: Mar Jan 11 11:03:11 shutdown: going to close listening sockets... Mar Jan 11 11:03:11 shutdown: going to flush oplog... Mar Jan 11 11:03:11 shutdown: going to close sockets... Mar Jan 11 11:03:11 shutdown: waiting for fs preallocator... Mar Jan 11 11:03:11 shutdown: closing all files... Mar Jan 11 11:03:11 closeAllFiles() finished

0 votes

J'ai copié le fichier MongoDB et le fichier journal sur le lecteur C et j'ai modifié le fichier bat en conséquence (j'ai laissé les fichiers de la base de données là où ils étaient sur l'autre lecteur). Le service a démarré sans aucun problème. Merci beaucoup pour l'aide.

1 votes

Heureux que vous ayez trouvé une solution. Veuillez marquer la question comme étant la réponse si cela vous a aidé!

17voto

Stanley.Goldman Points 1648

Si vous n'avez pas spécifié des chemins de fichiers absolus pour le répertoire de données ou le répertoire de logs, vous obtiendrez la même erreur Windows, mais aucun fichier de log.

J'ai utilisé les informations de "Installer le service MongoDB sur Windows 7", publié sur Webiyo pour corriger les arguments du service enregistré:

  1. Téléchargez MongoDB et extrayez-le sur le lecteur C:\.

  2. Ajoutez les sous-répertoires "data" et "logs" sous le répertoire "C:\mongodb165".

  3. Ajoutez un fichier log nommé "mongolog.txt" à "C:\mongodb165\logs\mongolog.txt".

  4. Changez le répertoire vers "C:\mongodb165\bin".

  5. Exécutez la commande suivante:

    mongod --install --rest –master –logpath=C:\mongodb165\logs\mongolog.txt
  6. Ouvrez l'éditeur de registre (regedit.exe), allez à HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Services.

  7. Recherchez la clé MongoDB et définissez la valeur de "ImagePath" sur:

    C:\mongodb165\bin\mongod --service  --rest  --master  --logpath=C:\mongodb165\logs\mongolog.txt  --dbpath=C:\mongodb165\data
  8. Enregistrez les modifications dans le registre et quittez l'éditeur de registre.

  9. Ouvrez ComponentServices, cliquez sur "Services (Local)", et recherchez le service MongoDB. Démarrez-le.

  10. Vérifiez à l'URL http://localhost:28017/ pour vérifier que MongoDB renvoie des statistiques.

11voto

Duck5auce Points 498

Je viens de rencontrer le même problème sur mon ordinateur Windows 7. J'ai suivi les instructions de la documentation de MongoDB pour l'installation, mais il ne me permettait pas d'exécuter "net start MongoDB" à moins que je ne sois dans "C:\". Je ne voulais pas retourner en arrière et réinstaller MongoDB pour suivre les instructions incluses dans le lien Webiyo mentionné ci-dessus. Si vous avez déjà installé MongoDB selon leur documentation et que vous souhaitez pouvoir exécuter "net start MongoDB" depuis n'importe quel répertoire de votre projet :

Allez dans HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > MongoDB

Double-cliquez sur ImagePath sous la colonne Nom

Collez le ImagePath suivant (modifiez le répertoire et les noms de dossier pour correspondre à vos besoins) :

C:\mongodb\bin\mongod.exe --service  --rest  --master  --logpath=C:\mongodb\log\mongolog.txt  --dbpath=C:\mongodb\data\db --config C:\mongodb\mongod.cfg

Notez que si vous copiez directement cette valeur ImagePath et que votre dossier "data" est dans le répertoire mongodb au lieu de C:\, ajoutez la ligne suivante à votre fichier "mongod.cfg" : dbpath=C:\mongodb\data\db

Après avoir fait cela, lorsque j'exécute "net stop MongoDB", je reçois le message "System error 109 has occurred. The pipe has been ended." Vous pourriez le voir également. Ce message a été discuté en détail sur jira.mongodb.org.

Pour vous faire gagner du temps et éviter de lire toute la discussion, le post de Tad Marshall résume bien ce problème :

"... c'était en bon état dans la version 2.1.0 ; des changements ultérieurs l'ont cassé à nouveau. Mais oui, vous obtenez ce message d'erreur dans le code actuel.

L'explication est que mongod.exe se termine depuis un fil de rappel créé par le Gestionnaire de contrôle de service Windows lorsqu'il nous appelle en raison de "net stop mongodb" et cela casse le tube RPC qu'il utilisait pour créer le fil de rappel. Nous devons réorganiser notre logique de sortie pour éviter cela.

Le message d'erreur est le seul véritable effet de ce problème ; nous nous arrêtons sur commande, proprement, et informons le Gestionnaire de contrôle de service Windows que nous sommes arrêtés, mais ensuite la commande "net" affiche un message d'erreur car nous n'avons pas renvoyé l'appel RPC de la manière dont il s'attendait à ce que nous le fassions."

0 votes

Ancienne réponse que je connais, mais j'aimerais simplement confirmer que cela a fonctionné pour moi avec MongoDB 2.6 Standard.

0 votes

Je voulais juste confirmer que cela a fonctionné pour moi aussi sous Windows 10/ mongoDB 2.6 -> le service démarre désormais automatiquement. Merci!

3voto

Rakesh Waghela Points 41

Solution pour une instance MongoDB en tant que service sous Windows 7 :

J'ai également rencontré ce problème. Voici la solution. Il semble que ce soit un problème courant.

http://www.webiyo.com/2011/02/install-mongodb-service-on-windows-7.html

2voto

A. Lowe Points 21

Une autre façon dont cela pourrait échouer est si le compte exécutant le service n'a pas les autorisations d'écriture dans le répertoire des données.

Dans ce cas, le service ne pourra pas créer de fichier de verrouillage.

Le service mongod se comporte mal dans cette situation et entre dans une boucle en démarrant un processus, qui lance immédiatement une exception non gérée, crashe, etc. le fichier journal est recréé à chaque fois que le processus démarre, donc vous devez le saisir rapidement si vous voulez voir l'erreur.

L'utilisateur par défaut pour les services Windows serait localhost\system. donc la solution est de s'assurer que cet utilisateur peut écrire dans votre répertoire de base de données, ou de démarrer le service en tant qu'un autre utilisateur qui le peut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X