Comment configurer MongoDB pour qu'il puisse fonctionner en tant que service Windows?
Je pense que si vous l'exécutez avec le commutateur de ligne de commande --install
, il l'installe en tant que service Windows.
mongod --install
Cela vaut peut-être la peine de lire ce fil d’abord, cependant. Il semble y avoir quelques problèmes avec les chemins relatifs/absolus lorsque la clé de registre correspondante est écrite.
Après avoir essayé pendant plusieurs heures, je l'ai finalement fait.
Assurez-vous que vous avez ajouté le répertoire <MONGODB_PATH>\bin
à la variable système PATH
.
J'ai d'abord exécuté cette commande:
D:\mongodb\bin>mongod --remove
Puis j'ai exécuté cette commande après avoir ouvert la commande Invite en tant qu'administrateur:
D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install
Après cela, là dans la commande Invite execute:
services.msc
Et recherchez le service MongoDB et cliquez sur Démarrer.
Si vous ne le faites pas, votre fichier journal ('D:\mongodb\log.txt' dans l'exemple ci-dessus) contiendra des lignes comme celles-ci:
2016-11-11T15:24:54.618-0800 I CONTROL [main] Trying to install Windows service 'MongoDB'
2016-11-11T15:24:54.618-0800 I CONTROL [main] Error connecting to the Service Control Manager: Access is denied. (5)
et si vous essayez de démarrer le service à partir d'une console non-admin (c'est-à-dire net start MongoDB
ou Start-Service MongoDB
dans PowerShell), vous obtiendrez une réponse comme celle-ci:
System error 5 has occurred.
Access is denied.
ou ca:
Start-Service : Service 'MongoDB (MongoDB)' cannot be started due to the following error: Cannot open MongoDB service
on computer '.'.
At line:1 char:1
+ Start-Service MongoDB
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
ServiceCommandException
+ FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceComman
pas seulement --install
,
aussi besoin de --dbpath
et --logpath
et après le redémarrage du système d'exploitation, vous devez supprimer "mongod.lock " manuellement
Contrairement aux autres réponses, ce sera ..
DÉMARRER LE SERVICE AUTOMATIQUEMENT SUR RÉINITIALISATION/REDÉMARRAGE DU SYSTÈME
(1) Installer MongoDB
(2) Ajouter bin au chemin
(3) Créez c:\data\db
(4) Créez c:\data\log
(5) Créez c:\data\mongod.cfg avec le contenu ..
systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db
(6) Pour créer un service qui démarrera automatiquement au redémarrage .. RUN AS ADMIN ..
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
(7) Démarrer le service .. RUN AS ADMIN ..
net start MongoDB
IMPORTANT: même si ceci indique 'Le service MongoDB a été démarré avec succès', il peut échouer
Pour vérifier l’ouverture du Panneau de configuration> Services, assurez-vous que le statut du service MongoDB est «En cours d’exécution».
Si ce n'est pas le cas, consultez votre fichier journal dans C:\data\log\mongod.log pour connaître le motif de l'échec et corrigez-le
(Ne démarrez pas MongoDB via le Panneau de configuration> Services, utilisez .. net start MongoDB)
(8) Enfin, redémarrez votre ordinateur avec MongoDB en cours d'exécution et il fonctionnera toujours au redémarrage.
Si jamais tu veux le tuer ..
net stop MongoDB
sc.exe delete MongoDB
Les étapes ci-dessous s'appliquent à Windows.
Exécuter ci-dessous dans une administrative cmd
mongod --remove
Cela supprimera le service MongoDB existant (le cas échéant).
mongod --dbpath "C:\data\db" --logpath "C:\Program Files\MongoDB\Server\3.4\bin\mongod.log" --install --serviceName "MongoDB"
Assurez-vous que le dossier C:\data\db
existe
Services ouverts avec:
services.msc
Rechercher MongoDB -> Clic droit -> Démarrer
Vous pouvez utiliser la commande ci-dessous pour exécuter mongodb en tant que service Windows
"C:\mongodb\bin\mongod" --bind_ip yourIPadress --logpath "C:\data\dbConf\mongodb.log" --logappend --dbpath "C:\data\db" --port yourPortNumber --serviceName "YourServiceName" --serviceDisplayName "YourServiceName" --install
Si vous utilisez mongodb avec des paramètres par défaut, vous pouvez utiliser ces valeurs:
Il y a plus d'informations sur cette commande ici
J'ai essayé toutes les réponses et ensuite je l'ai fait comme ça https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community-edition le décrit.
Utiliser un fichier de configuration ...
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
Ce script PowerShell télécharge et installe MongoDB en tant que service Windows:
Set-ExecutionPolicy RemoteSigned
$mongoDbPath = "C:\MongoDB"
$mongoDbConfigPath = "$mongoDbPath\mongod.cfg"
$url = "http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.4.9.Zip"
$zipFile = "$mongoDbPath\mongo.Zip"
$unzippedFolderContent ="$mongoDbPath\mongodb-win32-x86_64-2008plus-2.4.9"
if ((Test-Path -path $mongoDbPath) -eq $True)
{
write-Host "Seems you already installed MongoDB"
exit
}
md $mongoDbPath
md "$mongoDbPath\log"
md "$mongoDbPath\data"
md "$mongoDbPath\data\db"
[System.IO.File]::AppendAllText("$mongoDbConfigPath", "dbpath=C:\MongoDB\data\db`r`n")
[System.IO.File]::AppendAllText("$mongoDbConfigPath", "logpath=C:\MongoDB\log\mongo.log`r`n")
[System.IO.File]::AppendAllText("$mongoDbConfigPath", "smallfiles=true`r`n")
[System.IO.File]::AppendAllText("$mongoDbConfigPath", "noprealloc=true`r`n")
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($url,$zipFile)
$shellApp = New-Object -com Shell.application
$destination = $shellApp.namespace($mongoDbPath)
$destination.Copyhere($shellApp.namespace($zipFile).items())
Copy-Item "$unzippedFolderContent\*" $mongoDbPath -recurse
Remove-Item $unzippedFolderContent -recurse -force
Remove-Item $zipFile -recurse -force
& $mongoDBPath\bin\mongod.exe --config $mongoDbConfigPath --install
& net start mongodb
C'était la seule chose qui a fonctionné pour moi. Comme tout devait être un chemin absolu:
C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt
Je devais aussi l'exécuter à partir de admin cmd
La manière recommandée mongod --install
entraîne une erreur:
2015-12-03T18:18:28.896+0100 I CONTROL --install has to be used with a log file for server output
Après avoir installé mongodb dans C:\mongodb
, vous devez simplement ajouter le logpath:
mongod --install --logpath C:\mongodb\logs\mongo.log
Le chemin d'accès au fichier journal doit exister et il doit s'agir d'un chemin Windows absolu. Ensuite, vous démarrez le service MongoDB en tapant:
net start MongoDB
Travailler sur Mongo DB: 3.6
(1) Installer MongoDB
(2) Ajouter un bin à la variable de chemin d’environnement
(3) Créer c:\data\db
(4) Créer c:\data\mongod.log
(5) Exécuter en dessous de la commande sur le dossier bin
.\mongod.exe --install --logpath c:\data\mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c:\data\db
(6) Démarrer mongo db en tant que service
net start MongoDB
(7) Enfin, lancez mongo
en ligne de commande pour vérifier que Mongo Shell est ouvert ou non.
Pensez à utiliser
mongod --install --rest --master
C'est ce qui a fonctionné pour moi:
sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\bin\mongod.config" displayname= "MongoDB 2.6 Standard" start= "auto"
échapper à binPath échouait pour moi comme décrit dans la documentation de Mongo
Échoué:
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB 2.6 Standard\mongod.cfg\"" DisplayName= "MongoDB 2.6 Standard" start= "auto"
Le moyen le plus simple est,
C:\data\db
C:\data\db\log.txt
Ouvrez l'invite de commande sous "Exécuter en tant qu'administrateur" et assurez-vous que le chemin du répertoire bin de mogodb est correct
C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt"
Démarrer le service mongodb:
net run MongoDB
1) echo logpath=F:\mongodb\log\mongo.log > F:\mongodb\mongod.cfg
2) dbpath=F:\mongodb\data\db [add this to the next line in mongod.cfg]
C:\>F:\mongodb\bin\mongod.exe –config F:\mongodb\mongod.cfg –install
Travailler sur MongoDB 3.4 [Windows]
Créez un fichier dans C: /mongodb/mongodb.config en utilisant cette configuration:
storage:
engine: wiredTiger
dbPath: "C:/mongodb/data"
directoryPerDB: true
journal:
enabled: true
systemLog:
destination: file
path: "C:/mongodb/data/mongod.log"
logAppend: true
timeStampFormat: iso8601-utc
net:
bindIp: 127.0.0.1
port: 27017
wireObjectCheck : false
Pour installer MongoDb en tant que service, exécutez cette commande dans powershell avec admin power
mongod --config = "C:\mongodb\mongodb.config" --install --service
Ouvrez Services.msc et recherchez MongoDb, puis démarrez-le.
Actuellement (jusqu'à la version 2.4.4), si un chemin d'accès (chemin_base/logpath/config) contient des espaces, le service ne démarre pas et affiche l'erreur: "Le service ne répond pas à la fonction de contrôle".
Pour la version 2.4.3 (version actuelle à la date de publication), créez un fichier de configuration, puis exécutez les opérations suivantes:
C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service
Je suis sur la version 2.4.9 et utilise un fichier de configuration. Le service ne démarre pas tant que le signe égal n’a pas été entouré d’espaces dans le fichier de configuration:
dbpath = D:\Mongo data
logpath = C:\mongodb\logs\mongo.log
logappend = true
A l'origine j'avais:
logpath=C:\mongodb\logs\mongo.log
J'ai également découvert que, lors de l'installation du service, vous devez utiliser un chemin absolu pour le fichier de configuration, par exemple:
c:\mongodb\bin\>mongodb.exe C:\mongodb\bin\mongod.conf --install
Ne soyez pas tenté de mettre des guillemets autour d’un-dbpath avec des espaces. Le service semblera commencer lorsque vous exécuterez net start MongoDB mais il se terminera. Consultez les fichiers journaux pour vous assurer que le service a réellement démarré.
Exécutez "cmd.exe" en tant qu'administrateur, puis exécutez "sc.exe" pour ajouter un nouveau service Windows.
par exemple:
sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"
J'ai trouvé que vous devriez passer: dbpath, config et logfile à Mongod avec l'indicateur d'installation
exemple :
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
note: j'ai un chemin de mongod dans ma variable de chemin.
Vous pouvez contrôler le service avec:
net start mongodb
net stop mongodb
Si vous installez MongoDB 2.6.1 ou une version plus récente à l'aide de téléchargement MSI à partir d'une invite de commande de l'administrateur , une définition de service doit automatiquement être créée.
La documentation de MongoDB propose également un didacticiel pour vous aider à définir une { créer manuellement un service Windows } au besoin.
Voici les étapes à suivre pour installer MongoDB en tant que service Windows:
Créez un répertoire de journal, par exemple. C:\MongoDB\log
Créez un répertoire de base de données, par exemple C:\MongoDB\db
Préparer un fichier de configuration avec les lignes suivantes
dbpath=C:\MongoDB\db
logpath=C:\MongoDB\log
Placez le fichier de configuration avec le nom mongod.cfg dans le dossier "C:\MongoDB \"
La commande suivante installera le service Windows sur votre sc.exe create MongoDB binPath= "\"C:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\MongoDB\mongod.cfg\" DisplayName= "MongoDB 3.4" start= "auto"
Une fois que vous exécutez cette commande, vous obtiendrez le [SC] CreateService SUCCESS
Exécuter la commande suivante sur l'invite de commande
net start MongoDB
Cette réponse s'adresse à ceux qui ont déjà installé mongo DB à l'aide du programme d'installation MSI.
Supposons que votre emplacement d'installation par défaut est "C:\Program Files\MongoDB\Server\3.2\bin".
Procédure pour exécuter mongo en tant que service de fenêtre
cd C:\Program Files\MongoDB\Server\3.2\bin
(vérifiez le chemin correctement, car une version différente peut être installée, et non 3.2). net start MongoDB
services.msc
et vérifiez si Mongo est exécuté en tant que service.vérifier les services Windows
si vous avez un service pour Mongo, supprimez-le en exécutant la commande ci-dessous
mongod --remove
créer un fichier mongo.cfg avec le contenu ci-dessous
journal du système:
destination: fichier
chemin: c:\data\log\mongod.log
espace de rangement:
dbPath: c:\data\db
chemin: où vous voulez stocker les données du journal
dbPath: votre répertoire de base de données
puis lancez la commande ci-dessous
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
binPath: répertoire d'installation de mongodb
config: adresse du fichier .cfg
DisplayName: votre nom de service
commencer le service
net start MongoDB
maintenant tout est fait. apprécie ça
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
Dans mon cas, je crée le fichier mongod.cfg à côté du fichier mongd.exe avec le contenu suivant.
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: D:\apps\MongoDB\Server\4.0\data
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: D:\apps\MongoDB\Server\4.0\log\mongod.log
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
#processManagement:
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
Ensuite, je lance l'une des deux commandes pour créer le service.
D:\apps\MongoDB\Server\4.0\bin>mongod --config D:\apps\MongoDB\Server\4.0\bin\mongod.cfg --install
D:\apps\MongoDB\Server\4.0\bin>net stop mongodb
The MongoDB service is stopping.
The MongoDB service was stopped successfully.
D:\apps\MongoDB\Server\4.0\bin>mongod --remove
2019-04-10T09:39:29.305+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-04-10T09:39:29.309+0800 I CONTROL [main] Trying to remove Windows service 'MongoDB'
2019-04-10T09:39:29.310+0800 I CONTROL [main] Service 'MongoDB' removed
D:\apps\MongoDB\Server\4.0\bin>
D:\apps\MongoDB\Server\4.0\bin>sc.exe create MongoDB binPath= "\"D:\apps\MongoDB\Server\4.0\bin\mongod.exe\" --service --config=\"D:\apps\MongoDB\Server\4.0\bin\mongod.cfg\""
[SC] CreateService SUCCESS
D:\apps\MongoDB\Server\4.0\bin>net start mongodb
The MongoDB service is starting..
The MongoDB service was started successfully.
D:\apps\MongoDB\Server\4.0\bin>
Les éléments suivants ne sont pas corrects. Notez que les guillemets sont nécessaires.
D:\apps\MongoDB\Server\4.0\bin>sc.exe create MongoDB binPath= "D:\apps\MongoDB\Server\4.0\bin\mongod --config D:\apps\MongoDB\Server\4.0\bin\mongod.cfg"
[SC] CreateService SUCCESS
D:\apps\MongoDB\Server\4.0\bin>net start mongodb
The service is not responding to the control function.
More help is available by typing NET HELPMSG 2186.
D:\apps\MongoDB\Server\4.0\bin>