¿Cómo puedo ejecutar MongoDB como un servicio de Windows?

Respuestas:

118

Creo que si lo ejecuta con el --installinterruptor de línea de comando, lo instala como un servicio de Windows.

mongod --install

Sin embargo, podría valer la pena leer este hilo primero. Parece haber algunos problemas con las rutas relativas / absolutas cuando se escribe la clave de registro relevante.

Stephen Curran
fuente
77
finalmente logré instalar ejecutando esto: mongod.exe --service
heisthedon
3
Parece que lo que realmente necesita hacer es ingresar la ruta completa en la línea de comando: c: \> c: \ mongodb \ bin \ mongod.exe --service. Sin embargo, asegúrese de ejecutar la ventana de comandos como administrador (especialmente en el servidor de Windows), de lo contrario, UAC lo frustrará.
JC Grubbs
2
esta esencia puede ahorrar tiempo para configuraciones de máquinas de desarrollo gist.github.com/serdarb/5102848
Serdar
1
Y después de correr con --install, tendrás que hacerlonet start MongoDB
John
17
Requiere una ruta de archivo de registro, puede agregar dbpath y la ruta de archivo de registro de esta manera mongod --dbpath = "c: \ data \ db" --logpath = "c: \ data \ db \ log.txt" --install, After esto necesita ejecutar net start MongoDB.
sivaram636
355

Después de intentarlo durante varias horas, finalmente lo hice.

Asegúrese de agregar el <MONGODB_PATH>\bindirectorio a la variable del sistemaPATH

Primero ejecuté este comando:

D:\mongodb\bin>mongod --remove

Luego ejecuté este comando después de abrir el símbolo del sistema como administrador:

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

Después de eso, en el símbolo del sistema, ejecute:

services.msc

Y busque el servicio MongoDB y haga clic en iniciar.


NOTA: asegúrese de ejecutar el símbolo del sistema como administrador.

Si no hace esto, su archivo de registro ( D:\mongodb\log.txten el ejemplo anterior) contendrá líneas como estas:

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)

y si intenta iniciar el servicio desde una consola que no sea de administrador (es decir, net start MongoDBo Start-Service MongoDBen PowerShell), obtendrá una respuesta como esta:

System error 5 has occurred.
Access is denied.

o esto:

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
fuente
10
También puede comenzar con en net start MongoDBlugar de usar services.msc. (me lo mongodrecomendó)
Joe
1
Esto funcionó para mí. La ruta al archivo de registro debe crearse manualmente si aún no existe (en el ejemplo utilicé una ruta distinta al directorio mongo).
dgundersen
Al principio, Mongo comenzó como un servicio, pero mi base de datos estaba vacía. Solo pude ver mi base de datos previamente existente agregando \ data a la ruta: mongod --dbpath = D: \ mongodb \ data
Jeremy Thille
"Asegúrese de ejecutar el símbolo del sistema como administrador": ¡hizo el trabajo! La ejecución con permiso normal no escribe ninguna advertencia, pero el servicio simplemente no se crea. Permisos, permisos, permisos!
Dzoukr
1
Debería ser la respuesta validada
Logan Wlv
63

no sólo --install,

también necesita --dbpathy--logpath

y después de reiniciar el sistema operativo, debe eliminar "mongod.lock " manualmente

rubí
fuente
44
+1 para eliminar el archivo mongod.lock. Esto todavía parece ser un problema con 1.8.1 ejecutándose en 64 bits.
SethO
44
Mejor incluso especificar --config y definir dbpath, logpath y otras opciones allí.
Oleg
3
Parece que este mongod.lockerror está solucionado en miWindows 8 x64
Jonathan Czitkovics
50

A diferencia de otras respuestas, esto ...

INICIE EL SERVICIO AUTOMÁTICAMENTE AL REINICIAR / REINICIAR EL SISTEMA

Instalar MongoDB

Ventanas

(1) Instalar MongoDB

(2) Agregar bin a la ruta

(3) Crear c: \ data \ db

(4) Crear c: \ data \ log

(5) Cree c: \ data \ mongod.cfg con contenido.

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db

(6) Para crear un servicio que se iniciará automáticamente al reiniciar ... EJECUTAR COMO ADMINISTRADOR ...

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) Inicie el servicio. EJECUTE COMO ADMINISTRADOR.

net start MongoDB

IMPORTANTE: incluso si esto dice "El servicio MongoDB se inició correctamente", puede fallar

Para verificar dos veces, abra el Panel de control> Servicios, asegúrese de que el estado del servicio MongoDB sea 'En ejecución'

De lo contrario, revise su archivo de registro en C: \ data \ log \ mongod.log para ver el motivo del error y corríjalo

(No inicie MongoDB a través del Panel de control> Servicios, use .. net start MongoDB)

(8) Finalmente, reinicie su máquina con MongoDB ejecutándose y seguirá ejecutándose al reiniciar

Si alguna vez quieres matarlo ...

net stop MongoDB

sc.exe delete MongoDB
danday74
fuente
gracias, funcionó para mí, solo tuve que cambiar 3.4a la 3.6versión en este comandosc.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

Los siguientes pasos se aplican a Windows.

Ejecutar a continuación en un administrativo cmd

mongod --remove

Esto eliminará el servicio MongoDB existente (si lo hay).

mongod --dbpath "C:\data\db" --logpath "C:\Program Files\MongoDB\Server\3.4\bin\mongod.log" --install --serviceName "MongoDB"

Asegúrese de que esa C:\data\dbcarpeta existe

Servicios abiertos con:

services.msc

Encuentra MongoDB -> Haz clic derecho -> Iniciar

Mohammed Zameer
fuente
1
¡Perfecto! Nota menor, las carpetas deben existir (al menos la de los registros).
Diego Jancic
Pregunta menor con respecto a la nota al margen: ¿No es necesario que el archivo también exista? Puedo recordar vagamente la ausencia del archivo (vacío) en sí mismo que me da problemas.
Fariz Fakkel
1
Solución perfecta.
sapatelbaps
21

Puede usar el siguiente comando para ejecutar mongodb como un servicio de 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 usa mongodb con parámetros predeterminados, puede usar estos valores:

  • yourIPadress: 127.0.0.1 o localhost
  • yourPortNumber: 27017 (puerto predeterminado) o no coloque --port
  • serviceDisplayName: solo si ejecuta más de un servicio (desde mongodb 1.8)

Hay más información sobre este comando aquí.

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

chafank
fuente
14

Este script de PowerShell descarga e instala MongoDB como servicio de 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
fuente
10

Esto fue lo único que funcionó para mí. Como todo tenía que ser un camino absoluto:

C:\Program Files\MongoDB\Server\3.2\bin>mongod --install --dbpath=c:/data/db --logpath=c:/data/logs/log.txt

También tuve que ejecutarlo desde admin cmd

Jamie Hutber
fuente
7

La forma recomendada mongod --installproduce un error:

2015-12-03T18:18:28.896+0100 I CONTROL  --install has to be used with a log file for server output

Después de haber instalado mongodb C:\mongodb, simplemente debe agregar el logpath:

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

La ruta al archivo de registro debe existir y debe ser una ruta absoluta de Windows. Luego inicia el servicio MongoDB escribiendo:

net start MongoDB
Peter G.
fuente
5

Considere usar

mongod --install --rest --master
jrojo
fuente
considere la posibilidad de actualizar su respuesta con la respuesta de rubí (el suyo es incompleta)
danielpopa
5

Trabajando en Mongo DB: 3.6

(1) Instalar MongoDB

(2) Agregar bin a la variable de ruta de entorno

(3) Crear c:\data\db

(4) Crear c:\data\mongod.log

(5) Ejecutar debajo del comando en la bincarpeta

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

(6) Para iniciar mongo db como servicio

inicio neto MongoDB

(7) Finalmente, ejecute mongoen línea de comando para verificar que el shell mongo esté abierto o no.

Zahid Rahman
fuente
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

Referencia

Hassan Amir Khan
fuente
4

Esto es lo que funcionó para mí:

sc.exe create MongoDB binPath= "d:\MongoDB\bin\mongod.exe --service --config=d:\MongoDB\bin\mongod.config" displayname= "MongoDB 2.6 Standard" start= "auto"

escapar de binPath me fallaba como se describe en la documentación de Mongo

Ha fallado:

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
fuente
1
Ejecute cmd como administrador y ejecute este comando: 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

La forma más simple es,

  1. Crear carpeta C:\data\db
  2. Crea un archivo C:\data\db\log.txt
  3. Abra el símbolo del sistema como "Ejecutar como administrador" y asegúrese de que la ruta del directorio bin de mogodb sea correcta y escriba

    C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt" 
  4. Iniciar servicio mongodb:

    net run MongoDB
Arsalan Ahmed Khan
fuente
'C: \ Program' no se reconoce como un comando interno o externo, programa operativo o archivo por lotes.
151291
4

Trabajando en MongoDB 3.4 [Windows]

  • Crear directorio C: / mongodb / data
  • Cree un archivo en C: /mongodb/mongodb.config usando esta configuración:

    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
  • Para instalar MongoDb como servicio, ejecute este comando en powershell con poder de administración

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

  • Abra Services.msc y busque MongoDb, luego inícielo.

Marco Fantasia
fuente
3

Para la versión 2.4.3 (versión actual a partir de la fecha de publicación), cree un archivo de configuración y luego ejecute lo siguiente:

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

iisystems
fuente
3

Actualmente (hasta la versión 2.4.4), si alguna ruta (dbpath / logpath / config) contiene espacios, el servicio no se iniciará y mostrará el error: "El servicio no responde a la función de control".

RoeeK
fuente
2

Estoy en la versión 2.4.9 y estoy usando un archivo de configuración. El servicio no comenzaría hasta que rodeara el signo igual en el archivo de configuración con espacios:

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

Originalmente tuve:

logpath=C:\mongodb\logs\mongo.log 

También descubrí que al instalar el servicio, debe usar una ruta absoluta para el archivo de configuración, por ejemplo:

c:\mongodb\bin\>mongodb.exe C:\mongodb\bin\mongod.conf --install

No se sienta tentado a poner comillas invertidas alrededor de un dbpath con espacios. El servicio parecerá iniciarse cuando ejecute net start MongoDB pero finalizará. Verifique los archivos de registro para confirmar que el servicio realmente ha comenzado.

CrispinH
fuente
2

Ejecute "cmd.exe" como administrador y luego ejecute "sc.exe" para agregar un nuevo servicio de Windows.

por ejemplo:

sc.exe create MongoDB binPath= "c:\program files\mongodb\server\3.2\bin\mongod.exe"
Terry Lin
fuente
2

Descubrí que debe pasar: dbpath, config y logfile a mongod con el indicador de instalación

ejemplo:

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

nota: tengo la ruta mongod en mi variable de ruta.

Puedes controlar el servicio con:

net start mongodb
net stop  mongodb 
Ahmed Eid
fuente
2

Estos son los pasos para instalar MongoDB como servicio de Windows:

  1. Crear un directorio de registro, por ejemplo C:\MongoDB\log

  2. Crear un directorio db, p. Ej. C:\MongoDB\db

  3. Prepare un archivo de configuración con las siguientes líneas

    dbpath=C:\MongoDB\db

    logpath=C:\MongoDB\log

    Coloque el archivo de configuración con el nombre mongod.cfg en la carpeta "C: \ MongoDB \"

  4. El siguiente comando instalará el Servicio de Windows en su 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. Una vez que ejecute este comando, obtendrá el [SC] CreateService SUCCESS

  6. Ejecute el siguiente comando en el símbolo del sistema

    net start MongoDB

CP Soni
fuente
1

Esta respuesta es para aquellos que ya han instalado mongo DB usando el instalador MSI.

Digamos que su ubicación predeterminada instalada es "C: \ Archivos de programa \ MongoDB \ Server \ 3.2 \ bin"

Pasos para ejecutar mongo como un servicio de ventana

  1. Abrir símbolo del sistema como administrador
  2. Escriba cd C:\Program Files\MongoDB\Server\3.2\bin(verifique la ruta correctamente, ya que puede tener una versión diferente instalada y no 3.2).
  3. Presione enter
  4. Tipo net start MongoDB
  5. Presione enter
  6. Presione Windows + R, escriba services.mscy compruebe si Mongo se está ejecutando como servicio.
Abhas Bhoi
fuente
Tiene la ruta correcta pero obtiene un error: también System error 2 has occurred. The system cannot find the file specified.probé mongod, mongodb.
151291
0
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
Gehan Fernando
fuente
0
  1. comprobar los servicios de windows

    si tiene servicio para mongo, elimínelo ejecutando el siguiente comando
    mongod --remove

  2. crear un archivo mongo.cfg con contenido debajo

    systemLog:
    destino:
    ruta del archivo : c: \ data \ log \ mongod.log
    almacenamiento:
    dbPath: c: \ data \ db

    ruta: donde desea almacenar datos de registro
    dbPath: su directorio de base de datos

  3. luego ejecuta el siguiente comando

    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: directorio de instalación de mongodb
    config: dirección de archivo .cfg
    DisplayName: su nombre de servicio

  4. Comienza el servicio

    net start MongoDB

ahora todas las cosas están hechas. disfrutalo

Ahmad Hamzavi
fuente
0

En mi caso, creo el mongod.cfg junto al mongd.exe con los siguientes contenidos.

# 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:

Luego ejecuto los dos comandos para crear el servicio.

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>

Lo siguiente no es correcto, tenga en cuenta que las comillas escapadas son obligatorias.

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
fuente
-1

Por favor, pruebe los pasos en Mongo DB: 3.6 y 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
fuente
MongoDB 4.0 funciona bien en Windows de 64 bits ... A MENOS que intente asegurarlo agregando la línea "autorización: habilitada" a la configuración "Seguridad" en mongod.cfg. Luego, Windows genera un mensaje de error "el servicio no se inició de manera oportuna". ¿Alguna idea de lo que está pasando aquí?
David Edwards