Fork me on GitHub

Supervisor en Webfaction

October 16, 2012

Un par de meses atrás estuve haciendo un programa (Lai) para guardar anotaciones, snippets, comandos y cualquier texto en gral que quieras tener a mano en la consola. El programa tiene un cliente y un servidor. Como quería poner un servidor público de lai en mi cuenta de Webfaction me puse a buscar la mejor manera de mantener levantado el servicio y cómo iniciarlo automáticamente en caso de que reinicien el equipo. Encontré que para lo primero Supervisor es ideal.

La instalación es simple

pip install supervisor

Luego hay que copiar el archivo de configuración de ejemplo

cp ~/lib/python2.7/supervisor/skel/sample.conf ~/etc/supervisord.conf

Y modificar lo siguiente

[unix_http_server]
file=/home/user/supervisor.sock

[supervisord]
logfile=/home/user/supervisord.log
pidfile=/home/user/supervisord.pid

[supervisorctl]
serverurl=unix:///home/user/supervisor.sock

[include]
files=/home/user/etc/supervisord/*.ini

La última línea define el directorio donde vamos a poner los distintos servicios que queremos que maneje Supervisor. En mi caso creé un archivo lai-server.ini con lo siguiente

 [program:lai-server]
 environment=PYTHONPATH=/home/lvidarte/webapps/lai_server
 command=/home/lvidarte/webapps/lai_server/env/bin/python2.7 /home/lvidarte/webapps/lai_server/laiserver/server.py
 autostart=true
 autorestart=true
 redirect_stderr=true
 stdout_logfile=/home/lvidarte/logs/user/lai-server.log
 loglevel=info

Luego de esto ya se puede iniciar Supervisor

~$ supervisord

Los distintos servicios pueden monitorearse con el comando supervisorctl

~$ supervisorctl status lai-server
lai-server  RUNNING  pid 13923, uptime 4 days, 12:30:29

Finalmente para levantar automáticamente Supervisor en caso de que reinicien el equipo hay editar el cron de usuario (crontab -e) y poner algo como esto

10,30,50 * * * * [ -z "`ps -u user | grep supervisord`" ] && ~/bin/supervisord

Lai Python Trabajos Webfaction