Comment puis-je exécuter MongoDB en tant que service Windows?

Réponses:

118

Je pense que si vous l'exécutez avec le --installcommutateur de ligne de commande, il l'installe en tant que service Windows.

mongod --install

Cela vaut peut-être la peine de lire ce fil d' abord. Il semble y avoir des problèmes avec les chemins relatifs / absolus lorsque la clé de registre appropriée est écrite.

Stephen Curran
la source
7
j'ai finalement réussi à installer en exécutant ceci: mongod.exe --service
heisthedon
3
Il semble que ce que vous devez vraiment faire, c'est entrer le chemin complet sur la ligne de commande: c: \> c: \ mongodb \ bin \ mongod.exe --service. Cependant, assurez-vous d'exécuter la fenêtre de commande en tant qu'administrateur (en particulier sur le serveur Windows), sinon vous serez contrecarré par UAC.
JC Grubbs
2
cet élément peut être un gain de temps pour les configurations de machine de développement gist.github.com/serdarb/5102848
Serdar
1
Et après avoir exécuté avec --install, vous devreznet start MongoDB
John
17
Il nécessite un chemin de fichier journal, vous pouvez ajouter le chemin dbpath et le fichier journal comme ceci mongod --dbpath = "c: \ data \ db" --logpath = "c: \ data \ db \ log.txt" --install, After vous devez pour cela lancer net start MongoDB.
sivaram636
355

Après avoir essayé pendant plusieurs heures, je l'ai finalement fait.

Assurez-vous d'avoir ajouté le <MONGODB_PATH>\binrépertoire à la variable systèmePATH

J'ai d'abord exécuté cette commande:

D:\mongodb\bin>mongod --remove

Ensuite, j'ai exécuté cette commande après avoir ouvert l'invite de commande en tant qu'administrateur:

D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install

Après cela, dans l'invite de commandes, exécutez:

services.msc

Et recherchez le service MongoDB et cliquez sur Démarrer.


REMARQUE: assurez-vous d'exécuter l'invite de commande en tant qu'administrateur.

Si vous ne le faites pas, votre fichier journal ( D:\mongodb\log.txtdans 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. net start MongoDB- Start-Service MongoDBà- d. ou 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
hyeomans
la source
10
Vous pouvez également le démarrer avec net start MongoDBau lieu d'utiliser services.msc. ( mongodm'a recommandé cela.)
Joe
1
Cela a fonctionné pour moi. Le chemin vers le fichier journal doit être créé manuellement s'il n'existe pas déjà (j'ai utilisé un chemin autre que le répertoire mongo dans l'exemple).
dgundersen
Au début, Mongo a commencé en tant que service, mais ma base de données était vide. Je ne pouvais voir ma base de données existante qu'en ajoutant \ data au chemin: mongod --dbpath = D: \ mongodb \ data
Jeremy Thille
"Assurez-vous d'exécuter l'invite de commande en tant qu'administrateur" - il a fait le travail! L'exécution avec l'autorisation normale n'écrit aucun avertissement, mais le service n'est tout simplement pas créé. Autorisations, autorisations, autorisations!
Dzoukr
1
Devrait être la réponse validée
Logan Wlv
63

non seulement --install,

ont également besoin --dbpathet--logpath

et après le redémarrage du système d'exploitation, vous devez supprimer "mongod.lock " manuellement

rubis
la source
4
+1 pour supprimer le fichier mongod.lock. Cela semble toujours être un problème avec 1.8.1 exécuté sur 64 bits.
SethO
4
Mieux vaut même spécifier --config et y définir dbpath, logpath et d'autres options.
Oleg
3
Apparaît que ce mongod.lockbug est corrigé sur monWindows 8 x64
Jonathan Czitkovics
50

Contrairement à d'autres réponses, cela va ..

DÉMARRER LE SERVICE AUTOMATIQUEMENT SUR REDÉMARRAGE / REDÉMARRAGE DU SYSTÈME

Installation de MongoDB

les fenêtres

(1) Installez MongoDB

(2) Ajouter un bac 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émarrez le service .. RUN AS ADMIN ..

net start MongoDB

IMPORTANT: même si cela indique «Le service MongoDB a été démarré avec succès», il peut échouer

Pour vérifier deux fois le Panneau de configuration> Services, assurez-vous que l'état du service MongoDB est «En cours d'exécution»

Sinon, vérifiez votre fichier journal dans C: \ data \ log \ mongod.log pour la raison de l'échec et corrigez-le

(Ne démarrez pas MongoDB via Panneau de configuration> Services, utilisez .. net start MongoDB)

(8) Enfin, redémarrez votre machine avec MongoDB en cours d'exécution et il fonctionnera toujours au redémarrage

Si jamais vous voulez le tuer ..

net stop MongoDB

sc.exe delete MongoDB
danday74
la source
merci, cela a fonctionné pour moi, je devais juste changer 3.4de 3.6version dans cette commandesc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
guru_007
28

Les étapes ci-dessous s'appliquent à Windows.

Exécutez ci-dessous dans un dossier administratif 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 C:\data\dbdossier existe

Services ouverts avec:

services.msc

Trouver MongoDB -> Clic droit -> Démarrer

Mohammed Zameer
la source
1
Parfait! Remarque mineure, les dossiers doivent exister (au moins celui des journaux).
Diego Jancic
Petite question concernant sidenote: le fichier n'a-t-il pas besoin d'exister aussi? Je me souviens vaguement que l'absence du fichier (vide) lui-même me posait des problèmes.
Fariz Fakkel
1
Solution parfaite.
sapatelbaps
21

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:

  • yourIPadress: 127.0.0.1 ou localhost
  • yourPortNumber: 27017 (port par défaut) ou ne mettez pas --port
  • serviceDisplayName: uniquement si vous exécutez plusieurs services (depuis mongodb 1.8)

Il y a plus d'informations sur cette commande ici

http://www.mongodb.org/display/DOCS/Windows+Service

chafank
la source
14

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
Serdar
la source
10

C'était la seule chose qui fonctionnait 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 depuis admin cmd

Jamie Hutber
la source
7

La méthode recommandée mongod --installentraî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:\mongodbvous devez simplement ajouter le logpath:

mongod --install --logpath C:\mongodb\logs\mongo.log

Le chemin d'accès au fichier journal doit exister et doit être un chemin d'accès Windows absolu. Ensuite, vous démarrez le service MongoDB en tapant:

net start MongoDB
Peter G.
la source
5

Pensez à utiliser

mongod --install --rest --master
jrojo
la source
pensez à mettre à jour votre réponse avec la réponse de ruby ​​(la vôtre est incomplète)
danielpopa
5

Travailler sur Mongo DB: 3.6

(1) Installez MongoDB

(2) Ajouter bin à la variable de chemin d'accès à l'environnement

(3) Créer c:\data\db

(4) Créer c:\data\mongod.log

(5) Exécuter sous la commande sur le bindossier

. \ mongod.exe --install --logpath c: \ data \ mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c: \ data \ db

(6) Pour démarrer mongo db en tant que service

net start MongoDB

(7) Enfin, exécutez mongoen ligne de commande pour vérifier que le shell mongo est ouvert ou non.

Zahid Rahman
la source
4
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

Référence

Hassan Amir Khan
la source
4

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 au binPath échouait pour moi comme décrit dans la documentation 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"
Enkode
la source
1
Exécutez cmd en tant qu'administrateur et exécutez cette commande: sc.exe create MongoDB binPath = "d: \ MongoDB \ bin \ mongod.exe --service --config = d: \ MongoDB \ bin \ mongod.config" displayname = "MongoDB 2.6 Standard "start =" auto "
Akash5288
4

Le moyen le plus simple est,

  1. Créer le dossier C:\data\db
  2. Créer un fichier C:\data\db\log.txt
  3. Ouvrez l'invite de commande en tant que «Exécuter en tant qu'administrateur» et assurez-vous que le chemin du répertoire bin mogodb est correct et écrivez

    C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt" 
  4. Démarrer le service mongodb:

    net run MongoDB
Arsalan Ahmed Khan
la source
'C: \ Program' n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier de commandes.
151291
4

Travailler sur MongoDB 3.4 [Windows]

  • Créer dir C: / mongodb / data
  • 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 le pouvoir d'administrateur

    mongod --config = "C: \ mongodb \ mongodb.config" --install --service

  • Ouvrez Services.msc et recherchez MongoDb, puis démarrez-le

Marco Fantasia
la source
3

Pour la version 2.4.3 (version actuelle à la date de publication), créez un fichier de configuration, puis exécutez ce qui suit:

C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service

iisystems
la source
3

Actuellement (jusqu'à la version 2.4.4), si un chemin (dbpath / 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".

RoeeK
la source
2

Je suis sur la version 2.4.9 et j'utilise un fichier de configuration. Le service ne démarre que lorsque j'entoure le signe égal dans le fichier de configuration d'espaces:

dbpath = D:\Mongo data
logpath = C:\mongodb\logs\mongo.log 
logappend = true

À 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 virgules inversées autour d'un dbpath avec des espaces. Le service semblera démarrer lorsque vous exécuterez net start MongoDB mais il se terminera. Vérifiez les fichiers journaux pour confirmer que le service a vraiment démarré.

CrispinH
la source
2

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"
Terry Lin
la source
2

J'ai trouvé que vous devriez passer: dbpath, config et logfile à mongod avec le drapeau d'installation

exemple :

mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install 

remarque: j'ai mongod path dans ma variable path.

Vous pouvez contrôler le service avec:

net start mongodb
net stop  mongodb 
Ahmed Eid
la source
2

Voici les étapes pour installer MongoDB en tant que service Windows:

  1. Créez un répertoire de journaux, par exemple C:\MongoDB\log

  2. Créez un répertoire db, par exemple C:\MongoDB\db

  3. Préparez 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 \"

  4. 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"

  5. Une fois que vous exécutez cette commande, vous obtiendrez le [SC] CreateService SUCCESS

  6. Exécutez la commande suivante sur l'invite de commandes

    net start MongoDB

CP Soni
la source
1

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 soit "C: \ Program Files \ MongoDB \ Server \ 3.2 \ bin"

Étapes pour exécuter Mongo en tant que service de fenêtre

  1. Ouvrir l'invite de commande en tant qu'administrateur
  2. Tapez cd C:\Program Files\MongoDB\Server\3.2\bin(vérifiez le chemin d'accès correctement, car vous pouvez avoir une version différente installée, et non 3.2).
  3. Appuyez sur Entrée
  4. Type net start MongoDB
  5. Appuyez sur Entrée
  6. Appuyez sur Windows + R, tapez services.mscet vérifiez si Mongo fonctionne en tant que service.
Abhas Bhoi
la source
Avoir un chemin correct mais obtenir une erreur: System error 2 has occurred. The system cannot find the file specified.essayé mongod, mongodb également.
151291
0
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
Gehan Fernando
la source
0
  1. vérifier les services windows

    si vous avez un service pour mongo, supprimez-le en exécutant la commande ci-dessous
    mongod --remove

  2. créer un fichier mongo.cfg avec un contenu ci-dessous

    systemLog:
    destination:
    chemin du fichier : c: \ data \ log \ mongod.log
    stockage:
    dbPath: c: \ data \ db

    chemin: où vous souhaitez stocker les données du journal
    dbPath: votre répertoire de base de données

  3. puis exécutez 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:
    configuration du répertoire d'installation de mongodb: adresse du fichier .cfg
    DisplayName: votre nom de service

  4. démarrer le service

    net start MongoDB

maintenant tout est fait. profite de ça

Ahmad Hamzavi
la source
0

Dans mon cas, je crée le mongod.cfg à côté du 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, j'exécute la commande two 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 d'échappement sont requis.

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>
Donghua Liu
la source
-1

Veuillez essayer les étapes de Mongo DB: 3.6 et Windows 10

  1. mongod --remove
  2. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --service
  3. mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --install
  4. net start MongoDB
Tính Ngô Quang
la source
MongoDB 4.0 fonctionne correctement sur Windows 64 bits ... À MOINS QUE vous n'essayiez de le sécuriser en ajoutant la ligne "autorisation: activée" au paramètre "Sécurité" dans mongod.cfg. Il en résulte alors que Windows signale un message d'erreur "le service n'a pas démarré en temps opportun". Une idée de ce qui se passe ici?
David Edwards