Eu quero rodar o apache no Ubuntu 10.04 e usar o bom material de supervisão no iniciante (não estou falando apenas do script init do apache, mas da supervisão adequada de serviço à la daemontools - ou seja, reiniciando o apache quando ele morrer, coisas Curtiu isso).
Alguém tem uma configuração inicial para supervisionar o apache no ubuntu 10.04?
Os Googles não ajudaram, mas pode ser que meu google-fu esteja fraco.
Respostas:
Woooo!
Eu escrevi minha própria versão que está praticamente funcionando - com alguns hackers de arquivos conf e usando
-D NO_DETACH
.Primeiro, eu tinha de conjunto
User
,Group
ePidFile
em/etc/apache2/apache2.conf
manualmente, em vez de tê-los vindo/etc/apache2/envvars
. Não consegui descobrir uma maneira de exportar esses Vars corretamente (tentei ambosenv
e deexport
acordo com http://manpages.ubuntu.com/manpages/lucid/man5/init.5.html , mas não é bom).Então, este é o meu trabalho
/etc/init/apache2.conf
:Eu posso fazer
start|stop|status|reload apache2
e obter resultados significativos; sekill -9
o processo principal do apache, ele é reaparecido praticamente imediatamente, e inicia e pára na inicialização conforme o esperado. Então, está funcionando razoavelmente bem, eu acho.Tentei algumas coisas que não consegui trabalhar.
-D NO_DETACH
, em conjunto com:Falha ao iniciar o serviço.
/etc/apache2/envvars
para preencher as${APACHE_*}
variáveis:Isso falhou ao iniciar e produziu um erro sobre
apache2: bad user name ${APACHE_RUN_USER}
.Tentativa de saída do console e opções padrão do console; Nesse ponto, eu estava realmente tentando entender mensagens de erro significativas. Parecia não fazer diferença.
console output
Isso foi útil para depurar mensagens apache:
exec /usr/sbin/apache2 -X -e debug -E /var/log/apache2/foo.log
Essa foi outra tentativa de não modificar
/etc/apache2/apache2.conf
a falha:exec APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data APACHE_PID_FILE=/var/run/apache2.pid /usr/sbin/apache2 -D NO_DETACH -e debug -E /var/log/apache2/foo.log
fonte
Bem, esse script funcionou para mim:
fonte
Eu também atingi esse problema, no entanto, usei outra abordagem. A maneira mais fácil de obter as variáveis env é usar o comando source e apontá-lo para o arquivo apache envvars, para que você possa executar o apache com as opções -D FOREGROUND
Então, basicamente, você precisa de um script parecido com este (o meu está em /etc/apache2/apache2_foreground.sh):
Em seguida, você o torna executável e aponta o supervisor para a sua localização. Você também precisa usar o sinal de parada.
As duas primeiras linhas do script capturam o ID do grupo de processos e definem uma interceptação que é executada nos sinais passados para o processo - essa interceptação executa uma interrupção com um ID de processo negativo do pai que executa todos os processos apache2 (o script - matar com um PID negativo significa matar todos os filhos desse processo (assim, neste caso, todos os processos apache2), sem que eu não fosse capaz de fazer o supervisor matar os processos apache2
O sinal de parada 6 é usado, pois eu não consegui encontrar nenhum outro sinal que pudesse invocar a armadilha, o 9 não pode ser capturado e 2 e 3 não fazem nada (o script não é morto)
depois disso, ele deve funcionar sem problemas, sem nenhuma modificação na configuração do apache2
fonte
Algumas postagens de Scott James Remnant sobre o tópico que espero que possam ajudá-lo:
fonte
Ah, sim, normalmente a resposta será "escreva você mesmo", então minha sugestão típica seria consultar a página Introdução - iniciante e ... digitar.
Espero que alguém com mais conhecimento sobre o assunto do que eu crie um script inicial de trabalho.
fonte
Eu usaria uma abordagem muito parecida com a de Ben Williams, mas com em
-D FOREGROUND
vez de-D NO_DETACH
.fonte