Gestionar procesos de Umami con Supervisor
Hola, soy un inútil.
Aunque el sitio oficial de Umami recomienda la gestión de procesos con pm2, me gustaría gestionar los procesos de Umami utilizando el más simple y antiguo Supervisor.
¿Qué es Supervisor?
Es posible demonizar procesos y configurar fácilmente los archivos de registro en caso de un fallo utilizando *.conf.
Parece que el desarrollo se detuvo por un tiempo, pero ha resurgido un poco gracias al movimiento Systemd Free, y es posible demonizar y gestionar procesos que originalmente se ejecutaban con otros init utilizando Supervisor.
Como ya lo tengo instalado, omitiré el método de instalación.
Configuración
Crearemos un archivo de configuración como umami.conf.
sudo vim /etc/supervisor/conf.d/umami.conf
Lo escribí de la siguiente manera.
[program`umami]
command=npm start
directory=/var/www/html/umami ; Directorio de la aplicación
autostart=true ; Inicia automáticamente el proceso al arrancar el servidor
autorestart=true ; Reinicia automáticamente el proceso si termina
stderr_logfile=/var/log/umami.err.log ; Ubicación del archivo de registro de error estándar
stderr_logfile_maxbytes=1MB ; Tamaño máximo del archivo de registro
stdout_logfile=/var/log/umami.out.log ; Ubicación del archivo de registro de salida estándar
stdout_logfile_maxbytes=1MB ; Tamaño máximo del archivo de registro
environment=DATABASE_URL="YourDB",APP_SECRET="YourSecret",PORT="YourPort",HOSTNAME="YourHost" ;
user=test_user ; Usuario que ejecuta
Es un poco tarde para decirlo, pero en realidad debería haberlo colocado en /var/www/umami...
Ejecución
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start umami
sudo supervisorctl status umami
Y si lo haces,
umami RUNNING pid 801, uptime 0`19`12
Si aparece esto, significa que está funcionando correctamente. Si falla,
view /var/log/umami.err.log
view /var/log/umami.out.log
revisa los archivos para ver la causa del fallo de inicio.
Supervisor es genial
Es muy bueno porque permite una gestión sencilla solo con archivos *.conf.
Dicho esto, pm2 también muestra el uso de memoria, pero me preocupa la futura dependencia de las librerías de npm, así que personalmente prefiero algo tan simple como supervisord.
Además, no veo la necesidad de ejecutar la gestión de procesos en un entorno JavaScript. Hasta la próxima.
Saludos.