Je développe pour MongoDB depuis quelques mois maintenant et j'aimerais l’installer en tant que service sur ma machine Windows 7 Entreprise. 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 configuration du service, le message d'erreur suivant s'affiche:
Erreur 1053: le service n'a pas répondu au démarrage ou au contrôle demande en temps opportun.
Environnement: Windows 7 Entreprise 64 bits MongoDB: 1.6.3 pdfile version 4.5
Avez-vous vérifié en vous connectant pour voir le vrai problème?
Je suggère d'extraire l'installation Mongo à 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 procédure suivante pour supprimer le service (si vous l'avez installé!):
mongod --remove
Ensuite, installez le service en spécifiant les répertoires de journal et de données:
mongod --logpath c:\mongodb\logs\mongo.log --dbpath c:\mongodb\data\db --directoryperdb --install
Ensuite, si un problème survient lors du démarrage du service, vous devez voir la raison dans le fichier journal spécifié.
Plus d'infos ici .
Si vous n'avez pas spécifié de chemins de fichiers absolus pour le répertoire de données ou le répertoire de journal, vous obtiendrez la même erreur Windows, mais aucun fichier journal.
J'ai utilisé les informations de "Installer le service MongoDB sous Windows 7", poussé sur Webiyo pour corriger les arguments du service enregistré:
Exécutez la commande suivante:
mongod --install --rest –master –logpath=C:\mongodb165\logs\mongolog.txt
Ouvrez l’éditeur de registre (regedit.exe), accédez à HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Services.
Recherchez la clé MongoDB et définissez la valeur "ImagePath" sur:
C:\mongodb165\bin\mongod --service --rest --master --logpath=C:\mongodb165\logs\mongolog.txt --dbpath=C:\mongodb165\data
Enregistrez les modifications dans le registre et quittez l'éditeur de registre.
Je viens de rencontrer le même problème sur ma machine Windows 7. J'ai suivi les instructions dans la documentation MongoDB pour l'installation, mais cela ne m'a pas laissé exécuter "net start MongoDB" à moins que je ne sois dans "C: \". Je ne voulais pas revenir 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 conformément à leur documentation et souhaitez pouvoir exécuter "net start MongoDB" à partir de n'importe quel répertoire de projet:
Accédez à HKEY_LOCAL_MACHINE> SYSTEM> CurrentControlSet> services> MongoDB.
Double-cliquez sur ImagePath dans la colonne Nom.
Collez le chemin ImagePath suivant (modifiez le répertoire et les noms en fonction de 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" se trouve dans le répertoire mongodb au lieu de C: \, ajoutez la ligne suivante à votre fichier "mongod.cfg": dbpath=C:\mongodb\data\db
Après cela, lorsque je lance "net stop MongoDB", je reçois le message "Une erreur système 109 s'est produite. Le tube est terminé." Vous pouvez le voir aussi. Ce message a été discuté à fond à jira.mongodb.org .
Pour vous épargner le temps nécessaire à la lecture de toute la discussion, Tad Marshalls a résumé ce problème:
"... cela fonctionnait bien dans la version 2.1.0; des modifications ultérieures l'ont à nouveau rompu. Mais oui, vous obtenez ce message d'erreur dans le code actuel.
L'explication est que mongod.exe quitte un thread de rappel créé par le Gestionnaire de contrôle des services Windows lorsqu'il nous appelle en raison de "net stop mongodb" et que cela rompt le canal RPC utilisé pour créer le thread de rappel. Nous devons réorganiser notre logique de sortie pour éviter cela.
Le message d'erreur est le seul effet réel de ce problème. nous sortons sur commande, proprement, et informons le Gestionnaire de contrôle des services Windows que nous sommes arrêtés, mais la commande "net" affiche un message d'erreur car nous ne sommes pas revenus de l'appel RPC comme prévu. "
J'ai lancé cette commande:
C:\MongoDB\Server\3.4\bin>net start MongoDB
Et j'ai eu ce message:
Le service ne répond pas à la fonction de contrôle. Plus d'aide est disponible en tapant NET HELPMSG 2186.
Après quelques essais et erreurs, j’ai remarqué que lorsque je suivais le didacticiel, il m’avait demandé de nommer mon fichier mongod.conf mais la commande essayait de faire référence à mongod.cfg .
Dès que j'ai corrigé ce nom et ré-exécuté les commandes,
C:\MongoDB\Server\3.4\bin>sc.exe delete MongoDB
[SC] DeleteService SUCCESS
C:\MongoDB\Server\3.4\bin>sc.exe create MongoDB binPath= "\"C:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
[SC] CreateService SUCCESS
C:\MongoDB\Server\3.4\bin>net start MongoDB
The MongoDB service is starting....
The MongoDB service was started successfully.
Le service a commencé à fonctionner correctement.
Aux autres personnes susceptibles d'avoir le même problème sur Windows Server 2012:
Je viens d'avoir le même problème avec Mongo 3.0.3 sur Windows Server 2012. Je ne suis pas un administrateur système, donc je ne sais pas ce qu'ils ont changé pour sc.exe. Je dois utiliser
sc.exe create MongoDB binPath= "C:\mongodb\bin\mongod.exe --service --config=C:\mongodb\mongod.cfg" DisplayName= "MongoDB" start= "auto"
Ceci est sans le\"\" pour les chemins de fichiers binaires et config comparés à celui de leur site web.
Voici les étapes que j'ai suivies pour installer mongoDB sur Windows 7
téléchargez le fichier .msi à partir du site mongodb -> https://www.mongodb.com/download-center?jmp=nav#community et exécutez-le.
Où que votre mondoDb soit téléchargé (généralement dans le dossier Program Files du lecteur c), accédez à ce dossier et où se trouve le dossier bin de ce même dossier, créez votre dossier data et votre dossier log.
3.Dans votre dossier de données, créez votre dossier db
La structure ressemblerait à quelque chose comme ça
Ouvrez maintenant l'invite de commande en tant qu'administrateur.
changez le chemin du fichier et entrez le dossier bin (dans ce cas c: fichiers programme> MongoDB> bin>)
Entrez la commande suivante: mongod --directoryperdb --dbpath "C:/Program Files\MongoDB\data" --logpath "C:\Program Files\MongoDB\log\mongo.log" --logappend --rest --install
Cela définirait le chemin de log et le chemin de la base de données. Enfin, lancez net start MongoDB. J'espère que cela t'aides.
Vérifiez si votre fichier mongod.cfg contient des onglets. Enlever les onglets l'a résolu pour moi!
Pour mongoDB 3.0 , vous devrez définir ce qui suit dans le fichier de configuration.
logpath=E:\mongoDBdata\log\mongoDB.log
dbpath=E:\mongoDBdata\db
Le logpath doit se terminer par un fichier et non par un dossier.
Travaux suivants avec MongoDB 3.6.0
Assurez-vous que vous avez ces dossiers:
- C:\mongodb\data
- C:\mongodb\data\db
Alors tout ce dont vous avez besoin sont ces commandes:
- mongod --directoryperdb -dbpath C:\mongodb\data\db --logpath C:\mongodb\log\mongo.log --logappend --service --install
- net start MongoDB
- mongo
Cela risque également d’échouer si le compte qui exécute le service n’est pas autorisé à écrire dans le répertoire de 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 se met en boucle pour démarrer un processus qui lève immédiatement une exception non gérée, se bloque, etc. pour voir l'erreur.
l'utilisateur par défaut des services Windows serait localhost\system. le correctif consiste donc à s’assurer que cet utilisateur peut écrire dans votre répertoire de base de données ou démarrer le service en tant qu’autre utilisateur qui le peut.
assurez-vous d’ouvrir la ligne de commande avec les droits «exécuter en tant qu’administrateur» dans le clic droit avant de taper tout le texte
Pour la version 2.6 au moins, vous devez créer les dossiers/data/db/et/log/auxquels le fichier mongo.cfg pointe. MongoDB ne le fera pas lui-même et émettra cette erreur en réponse lorsqu'il est exécuté en tant que service.
Mon fichier mongod.cfg comportait les deux dernières lignes suivantes:
#snmp:
mp:
Je ne sais pas pourquoi il y a un député. Mais quand j'ai exécuté manuellement le chemin de l'image
C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service
à
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB
J'ai eu
c:\mongodb\bin>mongod /?C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service
Unrecognized option: mp
try 'mongod --help' for more information
Je l'ai donc commenté, puis le service a démarré sans problème.
Si vous regardez dans les détails du service, vous pouvez voir que la commande pour démarrer le service ressemble à quelque chose comme:
"C:\Program Files\MongoDB\bin\mongod" --config C:\Program Files\MongoDB\mongod.cfg --service
L’équipe MongoDB a oublié d’ajouter le "
autour de l’option --config
. Il suffit donc de modifier le registre pour le corriger et cela fonctionnera.
N'oubliez pas de créer la base de données avant de démarrer le service
C:\>"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath d:\MONGODB\DB
2016-10-13T18:18:23.135+0200 I CONTROL [main] Hotfix KB2731284 or later update is installed, no need to zero-out data files
2016-10-13T18:18:23.147+0200 I CONTROL [initandlisten] MongoDB starting : pid=4024 port=27017 dbpath=d:\MONGODB\DB 64-bit Host=mongosvr
2016-10-13T18:18:23.148+0200 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-10-13T18:18:23.149+0200 I CONTROL [initandlisten] db version v3.2.8
2016-10-13T18:18:23.149+0200 I CONTROL [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-10-13T18:18:23.150+0200 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1p-fips 9 Jul 2015
2016-10-13T18:18:23.151+0200 I CONTROL [initandlisten] allocator: tcmalloc
2016-10-13T18:18:23.151+0200 I CONTROL [initandlisten] modules: none
2016-10-13T18:18:23.152+0200 I CONTROL [initandlisten] build environment:
2016-10-13T18:18:23.152+0200 I CONTROL [initandlisten] distmod: 2008plus-ssl
2016-10-13T18:18:23.153+0200 I CONTROL [initandlisten] distarch: x86_64
2016-10-13T18:18:23.153+0200 I CONTROL [initandlisten] target_Arch: x86_64
2016-10-13T18:18:23.154+0200 I CONTROL [initandlisten] options: { storage: { dbPath: "d:\MONGODB\DB" } }
2016-10-13T18:18:23.166+0200 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=8G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-10-13T18:18:23.722+0200 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-10-13T18:18:23.723+0200 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory 'd:/MONGODB/DB/diagnostic.data'
2016-10-13T18:18:23.895+0200 I NETWORK [initandlisten] waiting for connections on port 27017
Ensuite, vous pouvez arrêter le processus Control-C
2016-10-13T18:18:44.787+0200 I CONTROL [thread1] Ctrl-C signal
2016-10-13T18:18:44.788+0200 I CONTROL [consoleTerminate] got CTRL_C_EVENT, will terminate after current cmd ends
2016-10-13T18:18:44.789+0200 I FTDC [consoleTerminate] Shutting down full-time diagnostic data capture
2016-10-13T18:18:44.792+0200 I CONTROL [consoleTerminate] now exiting
2016-10-13T18:18:44.792+0200 I NETWORK [consoleTerminate] shutdown: going to close listening sockets...
2016-10-13T18:18:44.793+0200 I NETWORK [consoleTerminate] closing listening socket: 380
2016-10-13T18:18:44.793+0200 I NETWORK [consoleTerminate] shutdown: going to flush diaglog...
2016-10-13T18:18:44.793+0200 I NETWORK [consoleTerminate] shutdown: going to close sockets...
2016-10-13T18:18:44.795+0200 I STORAGE [consoleTerminate] WiredTigerKVEngine shutting down
2016-10-13T18:18:45.116+0200 I STORAGE [consoleTerminate] shutdown: removing fs lock...
2016-10-13T18:18:45.117+0200 I CONTROL [consoleTerminate] dbexit: rc: 12
Maintenant votre base de données est préparée et vous pouvez démarrer le service en utilisant
C:\>net start MongoDB
The MongoDB service is starting.
The MongoDB service was started successfully.
J'ai eu le même problème sur Windows 8.1
La solution qui a fonctionné pour moi est de spécifier le chemin du fichier de configuration correctement
En allant à HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > MongoDB > imagePath
, la valeur était la suivante:
"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config mongod.cfg --service
Ensuite, j'ai corrigé le chemin du fichier de configuration pour qu'il corresponde à mon chemin actuel:
"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config "d:\mongodb\mongod.cfg" --service
Pour moi, le problème était le mauvais répertoire. Assurez-vous de copier-coller le répertoire à partir de votre explorateur de fichiers et de ne pas supposer que le répertoire spécifié sur la page Documents est correct.
Si vous recevez l'erreur:
le nom du service est invalide
lors de l'exécution de net start mongodb, vous devez exécuter la commande suivante à l'étape 4 de la section Créer manuellement un service Windows pour l'édition de la communauté MongoDB:
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
J'ai apporté peu de modifications au fichier de démarrage de la configuration, ce qui a provoqué ce problème. Quand j'ai regardé dans le fichier " mongo.log " ", il est dit
"Impossible de démarrer le serveur. Fichiers de données détectés dans E:\Mongo\data\db créés par le moteur de stockage 'wiredTiger'. Le moteur de stockage configuré est 'mmapv1'., Se terminant"
Réinitialiser le moteur de stockage sur 'wiredTiger' a résolu le problème pour moi. J'espère que cela aide les autres.
Vérifiez si une instance de processus de mongod
est déjà en cours d'exécution. Si oui, ce service ne démarrera pas car C:\data\db\mongod.lock
sera utilisé par celui-ci.
Et pour démarrer MongoDB en tant que service, ce fichier ne doit être utilisé par aucun processus.
Essayez simplement d’exécuter mongod.exe localement en ligne de commande, vous pouvez obtenir ici une exception qui appelle mongod et essayer de le résoudre. Dans mon cas, c’était peu d’espace libre sur le disque local, je ne change donc que l’emplacement des répertoires et modifie le fichier Mongocofig.