Estar creando una init-scripts o crons jobs para mantener nuestra aplicación corriendo o inicie una vez el sistema haga boot no es nada agradable. Si estas en esa misma situación este tutorial es para ti.
Instalar Supervisor
easy_install supervisor
Una vez instalado tenemos que crear nuestro archivo de configuración de supervisor, la ruta donde lo crearemos es la default por supervisor y mejor esa para evitar tener que estar cambiando configuraciones y/o pasando argumentos con la ruta de la misma.
echo_supervisord_conf > /etc/supervisord.conf
ejecutar el daemon de supervisor
supervisord
Ahora tenemos que crear nuestra configuración en supervisor para que corra nuestro proyecto, agregando esto a el archivo /etc/supervisord.conf:
... [program:proyecto] command=python /var/www/proyecto/manage.py runserver 8080 autostart=true stderr_logfile=/var/log/long.err.log stdout_logfile=/var/log/long.out.log ...
Lo que acabamos de hacer es configurarlo para que inicie una vez inicie supervisor (autostart) y asignarle donde queremos que redirija los errores y el output de nuestro proyecto en ejecución.
Para correr nuestra aplicación tenemos que hacer unos cuantos pasos por lo que es altamente recomendable crear un archivo bash y colocar todos los pasos para ejecutar nuestra app ahi dentro.
Configuración Supervisor
[program:proyecto] command=/var/www/proyecto/start.sh autostart=true stderr_logfile=/var/log/long.err.log stdout_logfile=/var/log/long.out.log
start.sh
#!/bin/bash # colocarnos en nuestra carpeta de nuestro proyecto # o podemos usar la opción de gunicorn --chdir cd /var/www/proyecto # En caso de tener su proyecto bajo un entorno # virtual (virtualenv) activarlo source env/bin/activate gunicorn proyecto.wsgi -b 127.0.0.1:8080 --worker-class=gevent --workers 2
Una vez configurado todo esto podríamos probar nuestra aplicación simplemente corriendo nuestro script.sh. Para iniciar nuestra aplicación simplemente ejecutamos estos comandos:
#Ejecutar una aplicacion supervisorctl start proyecto #Detiene una aplicacion en particular supervisorctl stop proyecto #Reinicia todas las aplicaciones supervisorctl reloadall #Recarga las configuracion de supervisor supervisorctl reread
Para quienes quieren manejar sus app sin tener que estar conectados a ninguna terminal, Supervisor posee una aplicación web que es bastante simple y da para los usos.
En caso de no gustarle ese web view existen varios proyectos con el mismo fin, entre ellos se pueden destacar los siguientes: