MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Executando mongodb no Ubuntu 16.04 LTS


Quem atualizou ou instalou o Ubuntu 16.04 ( também conhecido como Ubuntu Xenial xerus ) notou que alguns dos serviços antigos pararam de funcionar. Esse problema é conhecido da versão 15.04, mas vou focar na versão acima.

Esse foi o meu caso com o MongoDB. Para fazer uma longa história, curta, o Ubuntu mudou de upstart para systemd. Uma solução comum, para esses problemas, é voltar ao upstart. Não considero essa opção como uma solução real, certamente não a longo prazo.

Uma solução real ( IMHO ) para o problema é escrever o script systemd que iniciará o MongodDB. Infelizmente, os caras do MongoDB ainda não forneceram um.

Então eu tive que escrever um do zero. Para criar o seu próprio siga estes passos:
  1. mudar para root usando
    sudo su
    

ou use sudo para todas as etapas a seguir.

  1. crie um script de serviço (neste exemplo o nome do serviço é Mongodb)
    nano /lib/systemd/system/mongodb.service
    

  2. O conteúdo do arquivo deve ser
    [Unit]
    Description=MongoDB Database Service
    Wants=network.target
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/mongod --config /etc/mongod.conf
    ExecReload=/bin/kill -HUP $MAINPID
    Restart=always
    User=mongodb
    Group=mongodb
    StandardOutput=syslog
    StandardError=syslog
    
    [Install]
    WantedBy=multi-user.target
    

Você também pode baixar o arquivo aqui:mongodb.service
Aqui está uma descrição rápida dos campos importantes:
ExecStart - É o comando a ser executado. O Mongo se instala em /usr/bin e o arquivo de configuração é escrito em /etc
Usuário - O uid do processo mongod.
Grupo - O gid do processo mongod. Observe que o usuário e o grupo são criados pela instalação.


Agora para iniciar o mongodb:
sudo systemctl start mongodb

Para parar o serviço mongodb, use:
sudo systemctl stop mongodb

Para habilitar o mongodb na inicialização
sudo systemctl enable mongodb.service

Se você precisar atualizar os serviços, use:
 sudo systemctl daemon-reload