重新启动或停止Apache会导致永远等待

我有两个简单的WSGI应用程序运行在testing开发服务器上的mod_wsgiapache2 (worker)之上。 这台机器上没有mod_python

WSGIconfiguration如下

  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> 

如果我对configuration进行了修改(例如最大请求数等),我需要重新启动Web服务器,所以我期望一个简单的sudo service apache2 restart能够满足我的需要。

相反,它永远不会“等待”,就像这样:

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

直到我只做CTRL-C 。 在这一点上,恢复工作服务器的唯一方法是杀死进程并重新启动它,不是很方便。 stop命令也一样。

“debugging”级别的错误日志在重启失败后显示以下行

 [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. 

如果我然后尝试再次重新启动(与进程仍在运行),我得到以下错误:

  * 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. 

不幸的是,Apache错误日志没有任何东西。

当apache2正常运行时,这两个应用程序工作没有任何问题。

在某些情况下,日志条目不会写入磁盘(如果日志不存在或权限错误)。 诊断错误的最好方法是尝试使用以下命令启动Apache strace -Ff apachectl start