Instalar y configurar Supervisor
En este artículo, te enseñaré cómo instalar y configurar Supervisor en tu servidor y te proporcionaré siete ejemplos prácticos de cómo usarlo para administrar procesos en segundo plano en tu servidor.
¿Qué es Supervisor?
Supervisor es un sistema cliente/servidor que permite supervisar y controlar procesos en segundo plano en sistemas operativos basados en Unix. Con Supervisor, puedes iniciar, detener y reiniciar procesos automáticamente, y recibir alertas si alguno de ellos falla.
Instalación de Supervisor
Para instalar Supervisor en tu servidor, sigue estos sencillos pasos:
1: Abre una terminal en tu servidor e ingresa el siguiente comando para actualizar la lista de paquetes disponibles:sudo apt-get update
2: Luego, ingresa el siguiente comando para instalar Supervisor:sudo apt-get install supervisor
3: Una vez que la instalación haya finalizado, inicia el servicio Supervisor con el siguiente comando:sudo service supervisor start
¡Listo! Ahora, Supervisor está instalado y listo para ser configurado.
Configuración de Supervisor
Supervisor se configura a través de un archivo llamado supervisord.conf
, que se encuentra en la carpeta /etc/supervisor
. Para configurar Supervisor, sigue estos pasos:
1: Abre el archivo supervisord.conf
con el siguiente comando:sudo nano /etc/supervisor/supervisord.conf
2: Dentro del archivo, puedes definir los programas que deseas supervisar. Por ejemplo, puedes agregar lo siguiente al final del archivo para supervisar un programa llamado my_program.py
:[program:my_program]
command=/path/to/my_program.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/my_program.err.log
stdout_logfile=/var/log/my_program.out.log
En este ejemplo, command
es la ruta del programa que deseas supervisar, autostart
indica si el programa debe iniciarse automáticamente cuando Supervisor se inicia, autorestart
indica si el programa debe reiniciarse automáticamente si falla, y stderr_logfile
y stdout_logfile
son las rutas de los archivos de registro para errores y salida estándar, respectivamente.
Guarda el archivo y reinicia Supervisor con el siguiente comando:sudo service supervisor restart
¡Listo! Ahora, Supervisor supervisará el programa que has definido.
Ejemplos de uso de Supervisor
A continuación, se presentan siete ejemplos prácticos de cómo usar Supervisor para administrar procesos en segundo plano en tu servidor:
1: Ejecución de un script de Python
Si tienes un script de Python que deseas ejecutar en segundo plano, puedes supervisarlo con Supervisor de la siguiente manera:[program:my_script]
command=/path/to/my_script.py
autostart=true
autorestart=true
stderr_logfile=/var/log/my_script.err.log
stdout_logfile=/var/log/my_script.out.log
2: Ejecución de un servidor de Node.js
Si tienes un servidor de Node.js que deseas supervisar con Supervisor, puedes hacerlo de la siguiente manera:
[program:my_server]
command=/path/to/node /path/to/my_server.js
autostart=true
autorestart=true
stderr_logfile=/var/log/my_server.err.log
stdout_logfile=/var/log/my_server.out.log
En este ejemplo, command
es la ruta del ejecutable de Node.js y la ruta del archivo del servidor de Node.js que deseas ejecutar.
3: Ejecución de una cola de trabajos con Celery
Si estás usando Celery para administrar una cola de trabajos en tu servidor, puedes supervisar los trabajos de la siguiente manera:
[program:celery]
command=/path/to/celery worker -A myapp.tasks --loglevel=INFO
directory=/path/to/myapp
user=myuser
autostart=true
autorestart=true
stderr_logfile=/var/log/celery.err.log
stdout_logfile=/var/log/celery.out.log
En este ejemplo, command
es el comando que se utiliza para ejecutar Celery, directory
es la ruta del directorio raíz de tu aplicación, user
es el usuario que se utilizará para ejecutar Celery, y loglevel
es el nivel de registro que deseas utilizar.
4: Ejecución de un proceso de cron
Si tienes un proceso de cron que deseas supervisar, puedes hacerlo de la siguiente manera:
[program:my_cron]
command=/usr/bin/php /path/to/my_script.php
autostart=true
autorestart=true
stderr_logfile=/var/log/my_cron.err.log
stdout_logfile=/var/log/my_cron.out.log
Ejemplo de un proceso de cron que se ejecuta cada hora:
[program:hourly_cron]
command=/usr/bin/php /path/to/hourly_script.php
autostart=true
autorestart=true
startsecs=10
startretries=3
stderr_logfile=/var/log/hourly_cron.err.log
stdout_logfile=/var/log/hourly_cron.out.log
Ejemplo de un proceso de cron que se ejecuta cada día a una hora específica:
[program:daily_cron]
command=/usr/bin/php /path/to/daily_script.php
autostart=true
autorestart=true
startsecs=10
startretries=3
stderr_logfile=/var/log/daily_cron.err.log
stdout_logfile=/var/log/daily_cron.out.log
Ejemplo de un proceso de cron que se ejecuta cada semana:
[program:weekly_cron]
command=/usr/bin/php /path/to/weekly_script.php
autostart=true
autorestart=true
startsecs=10
startretries=3
stderr_logfile=/var/log/weekly_cron.err.log
stdout_logfile=/var/log/weekly_cron.out.log