Configure o Supervisor para executar o servidor web Apache2 no Ubuntu/Debian Linux
A ideia de iniciar seus serviços sob a supervisão do Supervisor é poder executar vários serviços sob um único daemon. Dependendo da configuração do Supervisor ele poderá iniciar, parar ou reiniciar qualquer serviço como um processo filho. Nesta configuração mostramos como executar o apache2
como serviço supervisionado (útil para imagens docker etc.) no Ubuntu/Debian Linux. Primeiro, instale o supervisor:
# apt-get install supervisor
Inclua a configuração do supervisor do apache2
em /etc/supervisor/conf.d/
. O Supervisor escolherá quaisquer arquivos de configuração deste diretório onde o único requisito seja a extensão de arquivo *.conf
. Por exemplo, insira as seguintes linhas em um novo arquivo /etc/supervisor/conf.d/apache2.conf
:
[program:apache2]
command=/usr/sbin/apache2ctl -DFOREGROUND
Depois de incluir o arquivo de configuração acima, pare o servidor web Apache2 se estiver em execução:
# /etc/init.d/apache2 stop
[ ok ] Stopping web server: apache2.
root@4e004b451a98:/# /etc/init.d/apache2 status
[FAIL] apache2 is not running ... failed!
e reinicie o supervisor:
# /etc/init.d/supervisor restart
Restarting supervisor: supervisord.
Depois de reiniciar o supervisor, o servidor web Apache2 também deve ser iniciado. Confirme se o servidor web Apache2 está em execução:
# /etc/init.d/apache2 status
[ ok ] apache2 is running.
Solução de problemas
se por algum motivo você não conseguir executar seu apache sob o supervisor, execute o supervisor no modo nodaemon
:
# /etc/init.d/supervisor stop
Stopping supervisor: supervisord.
# supervisord -n
Mensagem de erro:
/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 você vir a mensagem de erro acima, certifique-se de que seu servidor Apache ainda não esteja em execução.
Outra mensagem de erro que você pode ver é:
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}
Isso ocorre porque você está tentando executar o comando apache2
diretamente. Você pode tentar executar apache2ctl
.