我有两个简单的WSGI应用程序运行在testing开发服务器上的mod_wsgi和apache2 (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 。