User Tools

Site Tools


supervisor

This is an old revision of the document!


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 $@

Nota: quest'ultimo e' un wrapper general-purpose a Django, per cui non viene usato solo per lanciare Gunicorn.

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.

supervisor.1403380146.txt.gz · Last modified: 2014/10/28 11:28 (external edit)