Como posso configurar o MongoDB para que ele possa ser executado como um serviço do Windows?
Como posso configurar o MongoDB para que ele possa ser executado como um serviço do Windows?
Respostas:
Eu acho que se você executá-lo com a --install
opçã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.
net start MongoDB
Depois de tentar por várias horas, finalmente consegui.
Certifique-se de ter adicionado o <MONGODB_PATH>\bin
diretó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.
Se você não fizer isso, seu arquivo de log ( D:\mongodb\log.txt
no 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 MongoDB
ou seja, Start-Service MongoDB
no 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
net start MongoDB
vez de usar services.msc
. ( mongod
recomendado isso para mim.) #
não só --install
,
também precisa --dbpath
e--logpath
e depois de reiniciar o sistema operacional, você precisa excluir "mongod.lock " manualmente
mongod.lock
bug foi corrigido no meuWindows 8 x64
Ao contrário de outras respostas, isso irá ..
INICIAR O SERVIÇO AUTOMATICAMENTE AO REINICIAR / REINICIAR O SISTEMA
(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
3.4
a 3.6
versã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"
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\db
pasta existe
Serviços abertos com:
services.msc
Encontre MongoDB -> clique com o botão direito do mouse -> Iniciar
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:
Há mais informações sobre este comando aqui
Tentei todas as respostas e, em seguida, fiz da maneira que https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#configure-a-windows-service-for-mongodb-community-edition o descreve .
Use um arquivo de configuração ...
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
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
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
A maneira recomendada mongod --install
resulta 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:\mongodb
você 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
Considere usar
mongod --install --rest --master
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 bin
pasta
. \ 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 mongo
linha de comando para verificar se o 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 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"
A maneira mais simples é,
C:\data\db
C:\data\db\log.txt
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"
Inicie o serviço mongodb:
net run MongoDB
Trabalhando no MongoDB 3.4 [Windows]
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
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.
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
Estas são as etapas para instalar o MongoDB como serviço do Windows:
Crie um diretório de log, 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 o nome mongod.cfg na pasta "C: \ MongoDB \"
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"
Depois de executar este comando, você receberá o [SC] CreateService SUCCESS
Execute o seguinte comando no prompt de comando
net start MongoDB
Se você instalar o MongoDB 2.6.1 ou mais recente usando o download do MSI em um prompt de comando do administrador , uma definição de serviço deverá ser criada automaticamente para você.
A documentação do MongoDB também possui um tutorial para ajudá-lo a criar manualmente uma definição de serviço do Windows, se necessário.
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
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).net start MongoDB
services.msc
e verifique se o Mongo está sendo executado como um serviço.System error 2 has occurred. The system cannot find the file specified.
tentei mongod, mongodb também.
mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod_primary.cfg" --install --serviceName "MongoDB_Primary" --serviceDisplayName "MongoDB Primary"
verifique os serviços do windows
se você tiver serviço para o mongo, remova-o, execute o comando abaixo
mongod --remove
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
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
Começar serviço
net start MongoDB
agora tudo é feito. aproveite isso
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>
Por favor, tente as etapas no 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