Como posso executar o MongoDB como um serviço do Windows?
-
19-09-2019 - |
Pergunta
Como posso configurar MongoDB para que ele possa ser executado como um serviço do Windows?
Solução
Eu acho que se você executá-lo com a opção de linha de comando --install
, ele instala-lo como um serviço do Windows.
mongod --install
Pode valer a pena leitura esta discussão primeiro Apesar. Parece haver alguns problemas com caminhos relativos / absolutos quando a chave de registro relevante é escrita.
Outras dicas
Depois de tentar por várias horas, eu finalmente fez isso.
Certifique-se de que você adicionou o diretório <MONGODB_PATH>\bin
à variável de sistema PATH
Primeiro eu executado este comando:
D:\mongodb\bin>mongod --remove
Então eu executado este comando após comando de abertura rápida como administrador:
D:\mongodb\bin>mongod --dbpath=D:\mongodb --logpath=D:\mongodb\log.txt --install
Depois que ali mesmo no prompt de comando execute:
services.msc
E olhar para o serviço MongoDB e clique em Iniciar.
NOTA:. Certifique-se de executar prompt de comando como administrador
Se você não fizer isso, o arquivo de log ( 'D: \ mongodb \ log.txt' no exemplo acima) irá 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-admin, (ou seja net start MongoDB
ou Start-Service MongoDB
em PowerShell), você vai ter uma resposta como esta:
System error 5 has occurred.
Access is denied.
ou este:
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
não só --install
,
também precisa --dbpath
e --logpath
e depois OS reinicialização você precisa excluir "mongod.lock " manualmente
Ao contrário de outras respostas desta vontade ..
Inicie o serviço automaticamente no sistema reiniciar / RESTART
MongoDB Instalar
Windows
(1) Instalar MongoDB
(2) Adicionar bin ao caminho
(3) Criar c: \ data \ db
(4) Criar c: \ data \ Log
(5) Criar c: \ data \ mongod.cfg com conteúdos ..
systemLog:
destination: file
path: c:\data\log\mongod.log
storage:
dbPath: c:\data\db
(6) Para criar serviço que irá auto start na reinicialização .. executado 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 o serviço .. executado como administrador ..
net start MongoDB
IMPORTANTE: Mesmo que isso diz 'O serviço MongoDB foi iniciado com sucesso' pode falhar
Para verificação dupla abra o Painel de Controle> Serviços, verifique se o status do serviço MongoDB é 'Running'
Se não, verificar o seu arquivo de log em C: \ data \ log \ mongod.log para o motivo da falha e corrigi-lo
(não comece MongoDB via Painel de Controle> Serviços, uso .. net start MongoDB)
(8) Finalmente, reinicie sua máquina com MongoDB correndo e ainda será executado em restart
Se você quiser matá-lo ..
net stop MongoDB
sc.exe delete MongoDB
O abaixo etapas se aplicam ao Windows.
Executar abaixo em um administrativo cmd
mongod --remove
Isto irá 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"
Certifique-se de que a pasta C:\data\db
existe
Os serviços abertos com:
services.msc
Encontre MongoDB -> Botão direito do mouse -> Iniciar
Você pode usar o comando a seguir 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, você pode usar esses valores:
- yourIPadress: 127.0.0.1 ou localhost
- yourPortNumber: 27017 (porta padrão) ou put não faça --port
- SERVICEDISPLAYNAME: somente se você executar mais de um serviço (uma vez que MongoDB 1.8)
Não há mais informações sobre este comando aqui
Esta PowerShell Script baixa e instala 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
Eu tentei todas as respostas e, em seguida, fez o caminho https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community- edição descreve.
Use um arquivo de configuração ...
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
Esta 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 tinha que executá-lo de admin cmd
A forma mongod --install
resultados recomendados 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 ter mongodb instalados em C:\mongodb
você precisa simplesmente adicionar o logpath:
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. Em seguida, você iniciar o serviço MongoDB digitando:
net start MongoDB
Considere o uso
mongod --install --rest --master
Trabalho sobre Mongo DB: 3.6
(1) Instalar MongoDB
(2) Adicionar bin a variável caminho do ambiente
(3) Criar c:\data\db
(4) Criar c:\data\mongod.log
(5) Run abaixo comando no bin
pasta ??p>
\ mongod.exe --install --logpath c:. \ Data \ mongod.log --logappend --bind_ip 12 7.0.0.1 --dbpath c: \ data \ db
(6) Para iniciar mongo db como serviço
net start MongoDB
(7) Finalmente executar mongo
na linha de comando para verificar mongo shell está aberto ou não.
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
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 da binPath estava falhando para mim como 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"
A maneira mais simples é,
- Criar pasta
C:\data\db
- Criar
C:\data\db\log.txt
arquivo -
Open prompt de comando como "Executar como Administrador" e certifique-se o caminho mogodb bin está correto e escrita ??p>
C:\Program Files\MongoDB\Server\3.4\bin> mongod.exe --install mongod --dbpath="c:\data\db" --logpath="c:\data\db\log.txt"
-
Iniciar serviço MongoDB:
net run MongoDB
Trabalho sobre MongoDB 3.4 [Windows]
- Criar dir C: / MongoDB / dados
-
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 MongoDb como um serviço, execute este comando em PowerShell com poder admin
mongod --config = "C: \ mongodb \ mongodb.config" --install --service
-
Open Services.msc e olhar para MongoDB, em seguida, iniciá-lo
Para a versão 2.4.3 (a versão atual como da data de postagem), crie um arquivo de configuração e, em seguida, executar a seguinte:
C:\MongoDB\bin\mongod.exe --config C:\MongoDB\mongod.cfg --service
Atualmente (até a versão 2.4.4), se qualquer caminho (dbpath / logpath / config) contém espaços, em seguida, o serviço não será iniciado, e mostrar o erro: "O serviço não está respondendo à função de controle" .
Eu estou na versão 2.4.9 e usando um arquivo de configuração. O serviço não começaria até que cercaram o sinal de igual no arquivo de configuração com espaços:
dbpath = D:\Mongo data
logpath = C:\mongodb\logs\mongo.log
logappend = true
Inicialmente eu tinha:
logpath=C:\mongodb\logs\mongo.log
Eu também descobri que ao instalar o serviço que você tem que 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 aspas em torno de um dbpath com espaços. O serviço irá aparecer para iniciar quando você executar net start MongoDB , mas ele vai terminar. Verifique os arquivos de log para confirmação de que o serviço tem realmente começou.
Run "cmd.exe" como administrador e 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"
Eu achei que você deve passar: dbpath, configuração e arquivo de log para mongod com a instalação da bandeira
exemplo:
mongod --dbpath=c:\data\db --config=c:\data\db\config.cfg --logpath=c:\data\db\log.txt --install
Nota: Eu tenho caminho mongod na minha variável de caminho.
Você pode controlar o serviço com:
net start mongodb
net stop mongodb
Estas são as etapas para instalar MongoDB como serviço do Windows:
-
Crie um diretório de registro, por exemplo,
C:\MongoDB\log
-
Crie um diretório db, por exemplo,
C:\MongoDB\db
-
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 mongod.cfg nome na pasta "C: \ MongoDB \"
-
Na sequência de comando irá instalar o serviço do Windows em 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"
-
Uma vez que você executar este comando, você terá a
[SC] CreateService SUCCESS
-
Executar comando a seguir no prompt de comando
net start MongoDB
Se você instalar MongoDB 2.6.1 ou mais recente usando o MSI download de um Command Prompt Administrador , uma definição de serviço devem ser automaticamente criado para você.
A documentação MongoDB também tem um tutorial para ajudar você a manualmente Criar definição de um serviço do Windows se necessário.
Essa resposta é para aqueles que já instalou mongo DB usando instalador MSI.
Vamos dizer que a localização do seu padrão instalado é "C: \ Program Files \ MongoDB \ Server \ 3.2 \ bin"
Passos para executar mongo como um serviço de janela
- comando Abra o prompt como administrador
- Tipo
cd C:\Program Files\MongoDB\Server\3.2\bin
(trajeto de verificação corretamente, como você pode ter uma versão diferente instalado, e não 3.2). - Pressione Enter
- Tipo
net start MongoDB
- Pressione Enter
- Pressione Windows + R, tipo
services.msc
e verifique se Mongo está sendo executado como um serviço.
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
-
janelas de serviços de verificação
Se você tem serviço para mongo removê-lo por correr abaixo comando
mongod --remove
-
criar o arquivo mongo.cfg com o conteúdo abaixo
systemlog:
Destino: arquivo
caminho: C: \ data \ Log \ mongod.log
armazenamento:
dbPath: c: \ data \ db
caminho: onde você quer datas de log loja
dbPath: seu diretório de banco de dados
-
em seguida, executar abaixo de 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: diretório de instalação do MongoDB
config: endereço ficheiro.cfg
DisplayName: Seu nome Serviço
-
iniciar o serviço
net start MongoDB
Agora, cada as coisas são feitas. apreciar esse
No meu caso, eu criar 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 corro tanto os dois comandos 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>
Não são correta, observe as citações escaparam são necessários.
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>
Plz tente as etapas em Mongo DB: 3.6 e Windows 10
-
mongod --remove
-
mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --service
-
mongod --dbpath=C:/data/db --port 27017 --logpath C:/data/log/log.txt --install
-
net start MongoDB