This is an old revision of the document!
Table of Contents
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
Utilizzo
Dopo aver lanciato il demone Supervisor e aver aggiunto i relativi file di configurazione, e' possibile caricarli (simile a service daemon_name reload
):
# supervisorctl reread # supervisorctl update
Per vedere lo stato di un processo:
# supervisorctl status gf_deploy
Per entrare nella “console”:
# supervisorctl
Prima di dare comandi, viene stampato lo stato di tutti i processi. A questo punto e' possibile usare gli stessi comandi, senza ripetere supervisorctl
all'inizio.
Per avviare a mano un processo:
# supervisorctl start gf_deploy
Per riavviare un processo:
# supervisorctl restart gf_deploy
Nota: una volta dato reread && update
, i processi vengono
lanciati in automatico se hanno impostato autostart = True
nel file di configurazione.
Esempio 1: WebUI di Deluge (client torrent)
- /etc/supervisor/conf.d/deluge-web.conf
[program:deluge-web] command = deluge-web -p 7000 process_name = deluge-web user = root autostart = true autorestart = true redirect_stderr = true
Esempio 2: 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 $@
Nota: quest'ultimo e' un wrapper general-purpose a Django, per cui non viene usato solo per lanciare Gunicorn.