Pular para o conteúdo

Gerenciando serviços com o Supervisor

Dica publicada em Linux / Software
Caio Henrique Oliveira Rodrigues caiorodrigues
Hits: 19.024 Categoria: Linux Subcategoria: Software
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Gerenciando serviços com o Supervisor

Chega de dor de cabeça e sofrimento, pare de ficar criando scripts na mão, startar, parar e controlar um determinado serviço ou processo. Conheça o Supervisor!

Como descobri o Supervisor: tinha um servidor que executava vários websockets em node e python, e eu tinha que escrever um script de inicialização para cada um desses websockets, instalar forever rodar com nohup, as vezes o serviços caiam tinha que startar novamente, para dar manutenção nesses scripts gerava um transtorno enorme, enfim, era uma amolação insuportável. Foi aí que eu descobri o Supervisor e passei a ser mais feliz. :)

Uma breve descrição sobre o Supervisor, ele é uma aplicação capaz de gerenciar e monitorar de forma fácil e eficaz um determinado aplicativo ou processo, além de poupar de escrever um script de inicialização que muitas vezes pode conter falhas e não ser 100% eficaz. Para mais info:
Sem mais delongas, irei demonstrar dois exemplos de serviços sendo executados pelo supervisor, em um servidor Debian Jessie.

Primeiro instale o supervisor.

# apt-get install supervisor

Navegue até pasta onde você criará as configurações de inicialização de seus processos e serviços e crie os arquivos de configuração do seu serviço:

# cd /etc/supervisor/conf.d
# touch app1.conf && app2.conf


Depois disso edite os arquivos de configurações recém-criados, segue um exemplo de configuração.

# vim app1.conf

[program:app1] #nome do serviço/processo
command = node /usr/src/app/index.js #comando que será executado
user = noboady #usuario que irá executar o serviço, nao é rocomendado utilizar o root
autostart = true #inicializa assim que o supervisor ligar
autorestart = true #se o serviço parar por algum motivo ele irá inicizaliar sozinho
environment=NODE_ENV=production
stdout_logfile = /var/log/supervisor/app1.log
stderr_logfile = /var/log/supervisor/app1.log
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Agora o segundo exemplo:

# vim app2.conf

[program:app2]
command = /usr/bin/python ServerSocket.py #note que nao precisei passar o caminho todo por causa do diretorio base
directory = /usr/src/app/socket/ # diretorio base do meu serviço
user=nobody
autostart = true
autorestart = true
stdout_logfile = /usr/src/app/socket/app2.log
stderr_logfile = /usr/src/app/socket/app2.log

Feito isso, vamos ativá-los de fato e inicializá-los, execute:

# supervisorctl update
# supervisorctl start app1
# supervisorctl start app2


Irá retornar algo mais ou menos assim:

app1: added process group
app1: added process group
app1: started
app2: started


Para um teste final, localize o numero do processo que está rodando um do seus apps, e mate-o, note que o serviço irá iniciar automaticamente sozinho, com um pid diferente do antigo, isso é maravilhoso!
Linux: Gerenciando serviços com o Supervisor
Pronto! Feito isso os 2 serviços já estão iniciados e estão sendo gerenciados pelo supervisor de forma simples e eficaz, sem dor de cabeça.

Gostou? Foi útil? Ajude a propagar esse conhecimento. Compartilhe!

Originalmente publicado em: https://utilidadesvitais.wordpress.com/2016/07/01/gerenciando-servicos-com-o-supervisor/

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

Instalando Google Chrome no Debian 13

Instalar Java no Debian

Prey - Monitora seu laptop perdido ou roubado

Altera Quartus II Web Edition no Ubuntu 12.04

Instalando a última versão do Firefox no Slackware com AutoUpdate

#1 Comentário enviado por albfneto em 12/07/2016 - 17:07h
legal, favoritei.
saberia me dizer se funciona para os serviços do systemd?
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva.
#2 Comentário enviado por caiorodrigues em 12/07/2016 - 18:39h

[1] Comentário enviado por albfneto em 12/07/2016 - 17:07h

legal, favoritei.
saberia me dizer se funciona para os serviços do systemd?
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva.


Obrigado!
Cara, não vejo o porque de não funcionar, é só configurar bem direitinho com os parâmetros e variáveis certos

Contribuir com comentário

Entre na sua conta para comentar.