L'idea di avviare i propri servizi sotto la supervisione del Supervisore è quella di poter eseguire più servizi sotto un unico demone. A seconda della configurazione del supervisore, sarà in grado di avviare, interrompere o riavviare un determinato servizio come processo figlio. In questa configurazione mostriamo come eseguireapache2
come servizio supervisionato (utile per le immagini docker ecc.) su Ubuntu/Debian Linux.
Per prima cosa, installa supervisore:
# apt-get install supervisor
Includi apache2
configurazione del supervisore in /etc/supervisor/conf.d/
. Il supervisore selezionerà tutti i file di configurazione da questa directory in cui l'unico requisito è *.conf
estensione del file. Ad esempio, inserisci le seguenti righe in un nuovo file /etc/supervisor/conf.d/apache2.conf
:
[program:apache2] command=/usr/sbin/apache2ctl -DFOREGROUND
Dopo aver incluso il file di configurazione sopra, arresta il server web apache2 se è attualmente in esecuzione:
# /etc/init.d/apache2 stop [ ok ] Stopping web server: apache2. root@4e004b451a98:/# /etc/init.d/apache2 status [FAIL] apache2 is not running ... failed!
e riavvia supervisore:
# /etc/init.d/supervisor restart Restarting supervisor: supervisord.
Dopo aver riavviato supervisor, dovrebbe essere avviato anche il server web apache2. Conferma che il server web apache2 è in esecuzione:
# /etc/init.d/apache2 status [ ok ] apache2 is running.
Risoluzione dei problemi
se per qualche motivo non riesci a far funzionare il tuo apache sotto supervisor esegui supervisor in nodaemon
modalità:
# /etc/init.d/supervisor stop Stopping supervisor: supervisord. # supervisord -n
Messaggio di errore:
/usr/lib/python2.7/dist-packages/supervisor/options.py:296: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security. 'Supervisord is running as root and it is searching ' 2015-05-07 01:21:00,849 CRIT Supervisor running as root (no user in config file) 2015-05-07 01:21:00,849 WARN Included extra file "/etc/supervisor/conf.d/apache2.conf" during parsing 2015-05-07 01:21:00,858 INFO RPC interface 'supervisor' initialized 2015-05-07 01:21:00,858 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2015-05-07 01:21:00,858 INFO supervisord started with pid 542 2015-05-07 01:21:01,862 INFO spawned: 'apache2' with pid 545 2015-05-07 01:21:01,914 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:02,918 INFO spawned: 'apache2' with pid 548 2015-05-07 01:21:02,970 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:04,975 INFO spawned: 'apache2' with pid 551 2015-05-07 01:21:05,025 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:08,031 INFO spawned: 'apache2' with pid 554 2015-05-07 01:21:08,078 INFO exited: apache2 (exit status 0; not expected) 2015-05-07 01:21:09,079 INFO gave up: apache2 entered FATAL state, too many start retries too quickly
Se vedi il messaggio di errore sopra, assicurati che il tuo server web Apache non sia già in esecuzione.
Un altro messaggio di errore che potresti visualizzare è:
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf: Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
Questo perché stai tentando di eseguire apache2
comando direttamente. Puoi provare a eseguire apache2ctl
invece.