Reiniciar ou parar o apache resulta em esperar para sempre

1

Eu tenho dois aplicativos WSGI simples em execução em mod_wsgi e apache2 (worker) em um servidor de desenvolvimento de teste. Não há mod_python nesta máquina.

A configuração do WSGI é a seguinte

    WSGIDaemonProcess tops stack-size=524288 maximum-requests=5
    WSGIScriptAlias /tops /home/ubuntu/tops-cloud/tops.wsgi

    <Directory /home/ubuntu/tops-cloud>
            WSGIProcessGroup tops
            WSGIApplicationGroup %{GLOBAL}
            Order deny,allow
            Allow from all
    </Directory>


    WSGIDaemonProcess flaskal maximum-requests=5
    WSGIScriptAlias /c14 /home/ubuntu/c14/flaskal/flaskal.wsgi

    <Directory /home/ubuntu/c14/flaskal>
            WSGIProcessGroup flaskal
            WSGIApplicationGroup %{GLOBAL}
            Order deny,allow
            Allow from all
    </Directory>

Se eu fizer alterações na configuração (por exemplo, número de solicitações máximas, etc), preciso reiniciar o servidor da Web, por isso esperaria que um simples sudo service apache2 restart faça o que eu preciso.

Em vez disso, ele nunca termina "aguardando", assim:

$ sudo service apache2 restart
 * Restarting web server apache2
... waiting ..................................................

até que eu faça CTRL-C . Nesse ponto, a única maneira de retomar um servidor em funcionamento é para matar o processo e reiniciá-lo, não muito conveniente. O mesmo acontece com o comando stop .

Os logs de erro no nível "debug" mostram as seguintes linhas após uma falha na reinicialização

[Wed Nov 14 21:55:19 2012] [notice] caught SIGTERM, shutting down
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=9047): Shutdown requested 'tops'.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=9047): Stopping process 'tops'.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=9047): Destroying interpreters.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=9047): Cleanup interpreter ''.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=9047): Terminating Python.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=8920): Shutdown requested 'flaskal'.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=8920): Stopping process 'flaskal'.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=8920): Destroying interpreters.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=8920): Cleanup interpreter ''.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=8920): Terminating Python.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=8920): Python has shutdown.
[Wed Nov 14 21:55:19 2012] [info] mod_wsgi (pid=9047): Python has shutdown.

Se eu tentar reiniciar novamente (com o processo ainda em execução), recebo o seguinte erro:

 * Restarting web server apache2                                                                                                            (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

Infelizmente, o log de erros do Apache não tem nada.

Quando o apache2 está sendo executado corretamente, os dois aplicativos funcionam sem nenhum problema.

    
por steko 14.11.2012 / 13:30

1 resposta

0

Em alguns casos, uma entrada de log não será gravada no disco (se os logs não existirem ou se as permissões estiverem erradas). A melhor maneira de diagnosticar um erro é tentar iniciar o Apache com o seguinte comando strace -Ff apachectl start .

    
por 14.11.2012 / 18:24