Como posso executar o MongoDB como um serviço do Windows?


Respostas:


118

Eu acho que se você executá-lo com a --installopção de linha de comando, ele o instala como um serviço do Windows.

mongod --install

Pode valer a pena ler este tópico primeiro. Parece haver alguns problemas com caminhos relativos / absolutos quando a chave do Registro relevante é gravada.


7
Finalmente consegui instalar, execute o seguinte: mongod.exe --service
heisthedon

3
Parece que o que você realmente precisa fazer é inserir o caminho completo na linha de comando: c: \> c: \ mongodb \ bin \ mongod.exe --service. No entanto, certifique-se de executar a janela de comando como administrador (especialmente no servidor Windows), caso contrário você será impedido pelo UAC.
JC Grubbs

2
esta essência pode ser economia de tempo para a máquina devleopment configurações gist.github.com/serdarb/5102848
Serdar

1
E depois de executar com --install, você terá quenet start MongoDB
John

17
Ele requer um caminho de arquivo de log, você pode adicionar o caminho dbpath e logfile como este mongod --dbpath = "c: \ data \ db" --logpath = "c: \ data \ db \ log.txt" - instalar, depois isso é necessário para executar o net start MongoDB.
sivaram636

355

Depois de tentar por várias horas, finalmente consegui.

Certifique-se de ter adicionado o <MONGODB_PATH>\bindiretório à variável do sistemaPATH

Primeiro eu executei este comando:

D:\mongodb\bin>mongod --remove

Em seguida, executei este comando após abrir o prompt de comando como administrador:

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

Depois disso, no prompt de comando, execute:

services.msc

E procure o serviço MongoDB e clique em Iniciar.


NOTA: Certifique-se de executar o prompt de comando como administrador.

Se você não fizer isso, seu arquivo de log ( D:\mongodb\log.txtno exemplo acima) conterá linhas 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)

e se você tentar iniciar o serviço a partir de um console não administrador ( net start MongoDBou seja, Start-Service MongoDBno PowerShell), receberá uma resposta como esta:

System error 5 has occurred.
Access is denied.

ou isto:

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

10
Você também pode iniciá-lo em net start MongoDBvez de usar services.msc. ( mongodrecomendado isso para mim.) #
311 Joe Joe

1
Isso funcionou para mim. O caminho para o arquivo de log deve ser criado manualmente, se ainda não existir (usei um caminho que não seja o diretório mongo no exemplo).
21815 Dgundersen

No início, o Mongo começou como um serviço, mas meu banco de dados estava vazio. Eu só conseguia ver meu banco de dados previamente existente adicionando \ data para o caminho: mongod --dbpath = D: \ mongodb \ data
Jeremy Thille

"Certifique-se de executar o prompt de comando como administrador" - ele fez o trabalho! A execução com permissão normal não grava nenhum aviso, mas o serviço simplesmente não é criado. Permissões, permissões, permissões!
Dzoukr

1
Deve ser a resposta validada
Logan Wlv 16/04/19

63

não só --install,

também precisa --dbpathe--logpath

e depois de reiniciar o sistema operacional, você precisa excluir "mongod.lock " manualmente


4
+1 para excluir o arquivo mongod.lock. Isso ainda parece ser um problema com o 1.8.1 em execução em 64 bits.
SethO

4
Melhor ainda especificar --config e definir dbpath, logpath e outras opções lá.
8114 Oleg

3
Parece que esse mongod.lockbug foi corrigido no meuWindows 8 x64
Jonathan Czitkovics

50

Ao contrário de outras respostas, isso irá ..

INICIAR O SERVIÇO AUTOMATICAMENTE AO REINICIAR / REINICIAR O SISTEMA

Instalação do MongoDB

janelas

(1) Instale o MongoDB

(2) Adicionar bin ao caminho

(3) Crie c: \ data \ db

(4) Crie c: \ data \ log

(5) Crie c: \ data \ mongod.cfg com o conteúdo.

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

(6) Para criar um serviço que será iniciado automaticamente na reinicialização . EXECUTAR COMO 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) Inicie o serviço .. EXECUTAR COMO ADMIN ..

net start MongoDB

IMPORTANTE: Mesmo que isso diga 'O serviço MongoDB foi iniciado com êxito', ele poderá falhar

Para verificar novamente, abra Painel de controle> Serviços, verifique se o status do serviço MongoDB está em execução.

Caso contrário, verifique seu arquivo de log em C: \ data \ log \ mongod.log para obter o motivo da falha e corrija-o

(Não inicie o MongoDB através do Painel de Controle> Serviços, use .. net start MongoDB)

(8) Finalmente, reinicie sua máquina com o MongoDB em execução e ele ainda estará em execução na reinicialização

Se você quiser matá-lo ..

net stop MongoDB

sc.exe delete MongoDB

Graças ele trabalhou para mim, eu só tive que mudar 3.4a 3.6versão neste 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

As etapas abaixo se aplicam ao Windows.

Execute abaixo em um administrativo cmd

mongod --remove

Isso removerá o serviço MongoDB existente (se houver).

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

Verifique se a C:\data\dbpasta existe

Serviços abertos com:

services.msc

Encontre MongoDB -> clique com o botão direito do mouse -> Iniciar


1
Perfeito! Nota secundária, as pastas devem existir (pelo menos a pasta para os logs).
Diego Jancic 4/17/17

Pergunta secundária sobre a nota lateral: O arquivo também não precisa existir? Lembro-me vagamente da ausência do próprio arquivo (vazio), o que me causou problemas.
Fariz Fakkel

1
Solução perfeita.
Sapatelbaps 15/03/19

21

Você pode usar o comando abaixo para executar o mongodb como um serviço do 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 

Se você usar o mongodb com parâmetros padrão, poderá usar estes valores:

  • yourIPadress: 127.0.0.1 ou localhost
  • yourPortNumber: 27017 (porta padrão) ou não coloque --port
  • serviceDisplayName: somente se você executar mais de um serviço (desde o mongodb 1.8)

Há mais informações sobre este comando aqui

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



14

Este script do PowerShell baixa e instala o MongoDB como serviço do 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

10

Essa foi a única coisa que funcionou para mim. Como tudo tinha que ser um caminho absoluto:

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

Eu também tive que executá-lo admin cmd


7

A maneira recomendada mongod --installresulta em erro:

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

Depois de instalar o mongodb, C:\mongodbvocê precisa simplesmente adicionar o caminho de log:

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

O caminho para o arquivo de log deve existir e deve ser um caminho absoluto do Windows. Então você inicia o serviço MongoDB digitando:

net start MongoDB

5

Considere usar

mongod --install --rest --master

considere atualizar sua resposta com a resposta do ruby ​​(a sua está incompleta) #
danielpopa

5

Trabalhando no Mongo DB: 3.6

(1) Instale o MongoDB

(2) Adicionar bin à variável de caminho do ambiente

(3) Criar c:\data\db

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

(5) Executar abaixo do comando na binpasta

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

(6) Para iniciar o mongo db como serviço

início líquido MongoDB

(7) Finalmente, execute a mongolinha de comando para verificar se o mongo shell está aberto ou não.


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

Referência


4

Isto é o que funcionou para mim:

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 do binPath estava falhando para mim, conforme descrito na documentação do Mongo

Falha:

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"

1
Execute o cmd como administrador e execute este comando: sc.exe crie o MongoDB binPath = "d: \ MongoDB \ bin \ mongod.exe - service --config = d: \ MongoDB \ bin \ mongod.config" displayname = "MongoDB 2.6 Standard "start =" auto "
Akash5288

4

A maneira mais simples é,

  1. Criar pasta C:\data\db
  2. Criar arquivo C:\data\db\log.txt
  3. Abra o prompt de comando como "Executar como Administrador" e verifique se o caminho do diretório do mogodb bin está correto e escreva

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

    net run MongoDB

'C: \ Program' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.
151291

4

Trabalhando no MongoDB 3.4 [Windows]

  • Criar dir C: / mongodb / data
  • Crie um arquivo em C: /mongodb/mongodb.config usando esta configuração:

    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 o MongoDb como um serviço, execute este comando no powershell com admin power

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

  • Abra Services.msc, procure o MongoDb e inicie-o


3

Para a versão 2.4.3 (versão atual a partir da data de postagem), crie um arquivo de configuração e execute o seguinte:

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


3

Atualmente (até a versão 2.4.4), se algum caminho (dbpath / logpath / config) contiver espaços, o serviço não será iniciado e mostrará o erro: "O serviço não está respondendo à função de controle".


2

Estou na versão 2.4.9 e estou usando um arquivo de configuração. O serviço não seria iniciado até eu cercar o sinal de igual no arquivo de configuração com espaços:

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

Originalmente eu tinha:

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

Também descobri que, ao instalar o serviço, é necessário usar um caminho absoluto para o arquivo de configuração, por exemplo:

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

Não fique tentado a colocar vírgulas invertidas em torno de um dbpath com espaços. O serviço aparecerá para iniciar quando você executar o Mong start da net start, mas será encerrado. Verifique os arquivos de log para confirmar se o serviço realmente foi iniciado.


2

Execute "cmd.exe" como administrador e, em seguida, execute "sc.exe" para adicionar um novo serviço do Windows.

por exemplo:

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

2

Eu achei que você deveria passar: dbpath, config e logfile para mongod com o sinalizador de instalação

exemplo:

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

Nota: Eu tenho o caminho mongod na minha variável de caminho.

Você pode controlar o serviço com:

net start mongodb
net stop  mongodb 

2

Estas são as etapas para instalar o MongoDB como serviço do Windows:

  1. Crie um diretório de log, por exemplo C:\MongoDB\log

  2. Crie um diretório db, por exemplo C:\MongoDB\db

  3. Prepare um arquivo de configuração com as seguintes linhas

    dbpath=C:\MongoDB\db

    logpath=C:\MongoDB\log

    Coloque o arquivo de configuração com o nome mongod.cfg na pasta "C: \ MongoDB \"

  4. O comando a seguir instalará o Serviço Windows no seu 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. Depois de executar este comando, você receberá o [SC] CreateService SUCCESS

  6. Execute o seguinte comando no prompt de comando

    net start MongoDB



1

Esta resposta é para aqueles que já instalaram o mongo DB usando o instalador MSI.

Digamos que seu local padrão instalado seja "C: \ Arquivos de Programas \ MongoDB \ Server \ 3.2 \ bin"

Etapas para executar o mongo como um serviço de janela

  1. Abrir prompt de comando como administrador
  2. Digite cd C:\Program Files\MongoDB\Server\3.2\bin(verifique o caminho corretamente, pois você pode ter uma versão diferente instalada e não a 3.2).
  3. Pressione Enter
  4. Tipo net start MongoDB
  5. Pressione Enter
  6. Pressione Windows + R, digite services.msce verifique se o Mongo está sendo executado como um serviço.

Tenha o caminho correto, mas com erro: System error 2 has occurred. The system cannot find the file specified.tentei mongod, mongodb também.
151291

0
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"

0
  1. verifique os serviços do windows

    se você tiver serviço para o mongo, remova-o, execute o comando abaixo
    mongod --remove

  2. crie um arquivo mongo.cfg com conteúdo abaixo

    systemLog:
    destination:
    caminho do arquivo : c: \ data \ log \ mongod.log
    armazenamento:
    dbPath: c: \ data \ db

    caminho: onde você deseja armazenar os dados do log
    dbPath: o diretório do banco de dados

  3. então execute o comando abaixo

    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:
    configuração do diretório de instalação do mongodb : endereço do arquivo .cfg
    DisplayName: seu nome de serviço

  4. Começar serviço

    net start MongoDB

agora tudo é feito. aproveite isso


0

No meu caso, crio o mongod.cfg ao lado do mongd.exe com o seguinte conteúdo.

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

Então eu executo o comando dois para criar o serviço.

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>

O seguinte não está correto, observe que as aspas escapadas são necessárias.

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>

-1

Por favor, tente as etapas no Mongo DB: 3.6 e 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

O MongoDB 4.0 funciona bem no Windows de 64 bits ... A menos que você tente protegê-lo, adicione a linha "autorização: habilitada" à configuração "Segurança" no mongod.cfg. Em seguida, o Windows gera uma mensagem de erro "o serviço não foi iniciado em tempo hábil". Alguma idéia do que está acontecendo aqui?
David Edwards
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.