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:
- mudar para root usando
sudo su
ou use sudo para todas as etapas a seguir.
-
crie um script de serviço (neste exemplo o nome do serviço é Mongodb)
nano /lib/systemd/system/mongodb.service
-
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