Qual é a maneira correta de iniciar um serviço mongod no linux / OS X?

136

Instalei o mongodb e fui capaz de executá-lo, trabalhar com ele, executar coisas simples do tipo leitura / gravação de banco de dados. Agora estou tentando configurar meu Mac para executar o mongod como um serviço.

Recebo "Comando não encontrado" em resposta a:

 init mongod start

Em resposta a:

~: service mongod start
service: This command still works, but it is deprecated. Please use launchctl(8) instead.
service: failed to start the 'mongod' service

E se eu tentar:

~: launchctl start mongod
launchctl start error: No such process

Então, obviamente, estou errando um pouco. O próximo passo parece digitar caracteres aleatórios até que algo funcione. O comando que faz o trabalho é: mongod --quiet &Eu não tenho certeza, talvez essa é a maneira que você é suposto fazer isso? Talvez eu deva tirar o 'modo silencioso' e adicionar > /logs/mongo.logno final da linha de comando?

Estou construindo um ambiente de desenvolvimento em um Mac com a intenção de fazer a mesma coisa em um servidor Linux. Só não tenho certeza dos comandos do Bash. Todas as outras pesquisas que faço com a tentativa de obter a resposta me dão conselhos para máquinas Windows.

Talvez alguém conheça a versão linux dos comandos?

Muito obrigado

Alex C
fonte
Eu fiz no Windows com este link ( stackoverflow.com/questions/2438055/… ), não tenho certeza se é o mesmo no Mac OS.
8118 Scott
Graças Scott, nenhum Eu também visto e experimentado o material de seu segmentoerror command line: unknown option install
Alex C

Respostas:

129

Com as compilações recentes da edição da comunidade mongodb, isso é simples.

Quando você instala via fermentação, ele diz exatamente o que fazer. Não há necessidade de criar um novo arquivo de controle de inicialização.

$ brew install mongodb
==> Downloading https://homebrew.bintray.com/bottles/mongodb-3.0.6.yosemite.bottle.tar.gz ### 100.0%
==> Pouring mongodb-3.0.6.yosemite.bottle.tar.gz
==> Caveats
To have launchd start mongodb at login:
  ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Then to load mongodb now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
Or, if you don't want/need launchctl, you can just run:
  mongod --config /usr/local/etc/mongod.conf
==> Summary
🍺  /usr/local/Cellar/mongodb/3.0.6: 17 files, 159M
Brendan W. McAdams
fonte
Será mongodnecessidade de exibir informações através do servidor de janela; ele precisa ser um agente de inicialização ou é suficiente para torná-lo um daemon de inicialização ?
Marius Butuc
23
Atenção aos usuários do OSX: instalei o mongo via homebrew e ele foi incluído /usr/local/Cellar/mongodb/2.4.5-x86_64/homebrew.mxcl.mongodb.plist(e foi configurado corretamente para a minha instalação). Apenas copiado homebrew.mxcl.mongodb.plistem LaunchAgents e seguiu o restante destas instruções (substituindo homebrew.mxcl.mongodba org.mongodb.mongod) e ele funciona muito bem.
12113
5
É melhor você rolar para baixo para a resposta de Mario Alemi;)
oitava
/Library/LaunchAgents/homebrew.mxcl.mongodb.plist: Nenhum tal lima ou diretório
user269867
Primeiro de tudo: o MongoDB possui o Homebrew Tap oficial que você deve usar para instalar a edição da comunidade. $ brew tap mongodb/brewinstale usando $ brew install mongodb-community. Quanto aos serviços, se você executar o $ brew services Homebrew agora tem o Tap incluído, portanto, não há necessidade de fazer nada. Além disso, sobre os serviços de inicialização, se você só precisar do MongoDB após o login (como um servidor de desenvolvimento e não um servidor de produção), use o ~/Library/LaunchAgents/diretório e não o sistema, /Library/LaunchDeamonso último requer privilégios de root.
cseder 10/06
152

Edit: agora você deve usar brew services start mongodb, como na resposta de Gergo ...

Quando você instala / atualiza o mongodb, o brew lhe diz o que fazer:

Para que o launchd inicie o mongodb no login:

    ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

Em seguida, para carregar o mongodb agora:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Ou, se você não quiser / precisar do launchctl, basta executar:

    mongod

Funciona perfeitamente.

Mario Alemi
fonte
Eu não tinha visto essa instrução! Isso funciona perfeitamente para mim no Mac OSX 10.8.4, acho que o instalei com o Brew. O comentário de Jacob na resposta aceita apontou para um arquivo desconhecido quando tentei.
Matt Fletcher
5
Prefiro esta solução à resposta aceita. Copiar o argumento na resposta acima dificulta as coisas ao atualizar o mongo; você precisará se lembrar de atualizar os caminhos conforme necessário. Usar um link simbólico, conforme recomendado pela homebrew, no entanto, cuida disso para você. Eu usei esta abordagem, e os aliases de resposta acima (substituindo org.mongodb.mongod com homebrew.mxcl.mongodb), e as coisas funcionam muito bem
verboze
2
Eu tentei esta solução e o banco de dados que estava usando "desapareceu"! Acredito que este seja o motivo: o plist padrão fornecido pelo homebrew armazena a configuração do mongod em /usr/local/etc/mongod.conf. Esta configuração especifica que o dbpath seja / usr / local / var / mongodb em vez do padrão / data / db. Só queria anotar isso no caso de acontecer com outra pessoa. Para que meu banco de dados apareça novamente, tive que descarregar e remover o link simbólico.
ttemple 21/09
1
Nota: Há alguma estranheza com o launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plistinteriortmux
kqw
@ alguma idéia de como desfazer tudo isso?
Timeless
73

A servicestorneira do Homebrew integra fórmulas ao launchctlgerente. Adicioná-lo é fácil:

brew tap homebrew/services

Você pode iniciar o MongoDB com este comando (isso também iniciará o mongodb na inicialização):

brew services start mongodb

Você também pode usar stopou restart:

brew services stop mongodb
brew services restart mongodb
Gergo Erdosi
fonte
4
Gostou da resposta, mas descobriu que o brew removerá os serviços no futuro. brew services start mongodb Aviso: os serviços brew não são suportados e serão removidos em breve.
smile2day
1
Que notícia triste. Por enquanto, está obsoleto, o que significa que será removido algum dia, mas ainda funciona. Espero que alguém seja voluntário para mantê-lo como um toque. Atualizarei minha resposta quando ela for removida ou quando uma torneira estiver disponível.
Gergo Erdosi 17/08/14
1
robots.thoughtbot.com/...
Igor Shubovych
Ele já foi removido, pois vejo Error: Unknown command: servicesquando tentei dessa maneira.
iplus26
1
Obrigado por esta resposta. @ iplus26 ele ainda funciona para mim
Philip oghenerobo Balogun
3

Acabei de instalar o MongoDB via Homebrew. No final do console de instalação, você pode ver uma saída da seguinte maneira:

Para iniciar o mongodb:

brew services start mongodb

Ou, se você não quiser / precisar de um serviço em segundo plano, basta executar:

mongod --config /usr/local/etc/mongod.conf

Portanto, os serviços de fermentação iniciam o mongodb , conseguindo executar o MongoDB como um serviço para mim.

Ardi Bello
fonte
2

Eu dei uma olhada no lado do Mac. Você pode usar o instalador aqui , pois parece que faz toda a configuração para iniciar automaticamente no Mac OS. A única desvantagem é que parece que ele está usando uma versão bastante antiga do mongo.

Este link aqui também explica a configuração para o mongo iniciar automaticamente como um serviço em segundo plano no Mac.

Scott
fonte
1
O link não está mais disponível.
Hoppo 13/01/2019
1
não tenho certeza se era exatamente o mesmo, mas ligação fixa para ir ao artigo explicando o mesmo conceito
Scott
0

Primeiro passo

instale o mongodb na sua máquina Linux com

apt install mongodb-client && apt install mongodb-server

segundo passo é

altere o caminho do banco de dados em vez do caminho padrão do sistema, se desejar.
siga as etapas a seguir e altere por si mesmo.

mongod --directoryperdb --dbpath /var/lib/mongodb/data/db --logpath /var/lib/mongodb/log/mongodb.log --logappend --rest

e na sua máquina Windows, faça exatamente assim: basta colocar um sinalizador --install. você precisa receber uma mensagem de sucesso.

Cumprimentos...

MehdiPRG
fonte
0

No macOS 10.13.6 com MongoDB 4.0

Não consegui me conectar ao localhost a partir do shell mongo

Iniciei o MongoDB com:

mongod --config /usr/local/etc/mongod.conf

Eu descobri que o 'mongod.conf' tinha:

bindIp: 127.0.0.1

Mude minha conexão JavaScript de localhost para 127.0.0.1 e funcionou bem.

O mesmo ocorreu com o MongoDB Compass.

NOTiFY
fonte
0

Após instalar o mongodb através do brew, execute-o para instalá-lo:

mongod --dbpath /usr/local/var/mongodb
user129916
fonte
2
Esta é a mesma resposta que Rejeev-Divakaran forneceu há mais de cinco anos. Verifique as respostas existentes antes de enviar uma nova. Se existe alguém que sugere sua mesma abordagem, a ação apropriada é a de aprová-la - um privilégio que você ganhará após receber mais quatro pontos de reputação, acredito.
Jeremy Caney
0
mongod --dbpath [path_to_data_directory]
Rejeev Divakaran
fonte
2
O OP deseja executá-lo como um serviço, não de maneira interativa. Uma boa resposta deve abordar isso diretamente.
paulmelnikow