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.

Stephen Curran
fonte
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
hyeomans
fonte
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

rubi
fonte
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
danday74
fonte
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

Mohammed Zameer
fonte
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

chafank
fonte
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
Serdar
fonte
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

Jamie Hutber
fonte
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
Peter G.
fonte
5

Considere usar

mongod --install --rest --master
jrojo
fonte
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.

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

Hassan Amir Khan
fonte
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"
Enkode
fonte
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
Arsalan Ahmed Khan
fonte
'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

Marco Fantasia
fonte
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

iisystems
fonte
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".

RoeeK
fonte
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.

CrispinH
fonte
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"
Terry Lin
fonte
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 
Ahmed Eid
fonte
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

CP Soni
fonte
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.
Abhas Bhoi
fonte
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"
Gehan Fernando
fonte
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

Ahmad Hamzavi
fonte
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>
Donghua Liu
fonte
-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
Tính Ngô Quang
fonte
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