Gerenciando serviços com o Supervisor

Publicado por Caio Henrique Oliveira Rodrigues em 11/07/2016

[ Hits: 17.293 ]

 


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

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/

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Solução para problema de fontes do Fedora 15 Lovelock

Instalando Spotify no Ubuntu 17.04

Instalando Discord no Fedora 40

Clube do pingüim

Gerenciador de janelas Window Maker em Vídeo aula

  

Comentários
[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: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].

[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: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].


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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts