Supervisor

Supervisor e' uno strumento pratico e semplice per demonizzare dei normali processi foreground.

In /etc/supervisor/conf.d/ ci sono i file di configurazione (con sintassi .ini), in particolare nella direttiva “command” viene richiamato il binario o lo script da lanciare. Per convenzione beFair, nel caso di script si consiglia di metterli in /usr/local/bin/.

Altri 2 parametri molto importanti sono autostart e autorestart, ovvero il processo viene lanciato al boot, e viene rilanciato nel caso in cui crasha. Questo e' possibile perche' Supervisor e' lui stesso un demone vero e proprio (che va settato per essere lanciato al boot della macchina).

Per cui se si fa un reboot del server, dovrebbe partire tutto in automatico: Supervisor + i processi che gestisce.

In sostanza e' come se ci fossero 2 livelli:

Demone init (SysV, systemd..) --> Supervisor --> gf_deploy
--> gf_testcase

A titolo di esempio, i file di Gasista Felice:

- /etc/supervisor/conf.d/gf_deploy.conf (file di Supervisor)

[program:gf_deploy]
command = /usr/local/bin/gf_deploy.sh run_gunicorn
-b unix:/var/run/gf_deploy.sock
-w 10
process_name = %(program_name)s
user = gf_deploy
group = gf_deploy
autostart = true
autorestart = true
stdout_logfile = /var/log/gf_deploy.log
redirect_stderr = true

- /usr/local/bin/gf_deploy.sh (wrapper a Django)

#!/bin/bash
export WORKON_HOME=/usr/local/venvs
export DJHISTORY_HOME=/usr/local/venvs/gf-deploy/src/django-pro-history
export PYTHONPATH=/usr/lib/python2.7/dist-packages
source /etc/bash_completion.d/virtualenvwrapper
workon gf-deploy
cd /usr/local/src/gasistafelice/gasistafelice
/usr/bin/env python manage.py $@

Reference guide

Leggi i file di configurazione e caricali (e' simile a `service nome_demone reload`):

# supervisorctl reread
# supervisorctl update

Per vedere lo stato di un processo:

# supervisorctl status gf_deploy

Per entrare nella “console” (prima di dare comandi, vi stampa lo stato di tutti i processi):

# supervisorctl

Per avviare a mano un processo:

# supervisorctl start gf_deploy

Per riavviare un processo:

# supervisorctl restart gf_deploy

Tenete conto che una volta dato reread && update, i processi vengono lanciati in automatico se hanno impostato autostart = True.