Gerenciando processos do Umami com Supervisor
Olá, sou um incompetente.
Embora o oficial do Umami recomende o gerenciamento de processos com pm2, gostaria de usar o Supervisor, que é mais simples e existe há muito tempo, para gerenciar os processos do Umami.
O que é o Supervisor
É possível demonizar processos e configurar facilmente arquivos de log em caso de falha usando *.conf.
Parece que o desenvolvimento havia parado por um tempo, mas com o movimento Systemd Free, ele ganhou um pouco de força novamente, e é possível demonizar e gerenciar processos que originalmente rodavam com outros init usando Supervisor.
Como já está instalado, vou omitir o método de instalação.
Configuração
Crie um arquivo de configuração como umami.conf.
sudo vim /etc/supervisor/conf.d/umami.conf
Eu escrevi o seguinte:
[program`umami]
command=npm start
directory=/var/www/html/umami ; Diretório da aplicação
autostart=true ; Inicia o processo automaticamente na inicialização do servidor
autorestart=true ; Reinicia automaticamente se o processo terminar
stderr_logfile=/var/log/umami.err.log ; Local do arquivo de log de erro padrão
stderr_logfile_maxbytes=1MB ; Tamanho máximo do arquivo de log
stdout_logfile=/var/log/umami.out.log ; Local do arquivo de log de saída padrão
stdout_logfile_maxbytes=1MB ; Tamanho máximo do arquivo de log
environment=DATABASE_URL="YourDB",APP_SECRET="YourSecret",PORT="YourPort",HOSTNAME="YourHost" ;
user=test_user ; Usuário para executar
É tarde demais, mas eu deveria ter colocado em /var/www/umami...
Execução
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start umami
sudo supervisorctl status umami
Então,
umami RUNNING pid 801, uptime 0`19`12
Se essa mensagem for exibida, significa que está funcionando normalmente. Se falhar,
view /var/log/umami.err.log
view /var/log/umami.out.log
vamos verificar a causa pela qual não pode ser iniciado.
Supervisor é bom
É muito bom porque permite um gerenciamento fácil apenas com arquivos *.conf.
Dito isso, pm2 também exibe o uso de memória, mas estou preocupado com as futuras dependências de bibliotecas em torno do npm, então pessoalmente prefiro algo tão simples quanto o supervisord.
E porque não vejo a necessidade de rodar o gerenciamento de processos em um ambiente JavaScript. Até a próxima.
Obrigado.