登录python+;mod_wsgi应用程序
我在apache服务器上部署了一个python flask应用程序。这是我的登录python+;mod_wsgi应用程序,python,mod-wsgi,Python,Mod Wsgi,我在apache服务器上部署了一个python flask应用程序。这是我的abc.conf文件: WSGIDaemonProcess voting_app threads=5 WSGIScriptAlias /election /var/www/voting_app/voting.wsgi LogLevel info ErrorLog "/var/www/voting_app/error.log" CustomLog "/var/www/voting_app/access.log" comb
abc.conf
文件:
WSGIDaemonProcess voting_app threads=5
WSGIScriptAlias /election /var/www/voting_app/voting.wsgi
LogLevel info
ErrorLog "/var/www/voting_app/error.log"
CustomLog "/var/www/voting_app/access.log" combined
<Directory /var/www/voting_app>
WSGIProcessGroup voting_app
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
WSGIDaemonProcess投票\u应用程序线程=5
WSGIScriptAlias/election/var/www/voting_app/voting.wsgi
日志级别信息
ErrorLog“/var/www/voting_app/error.log”
CustomLog“/var/www/voting_app/access.log”组合
WSGIProcessGroup投票应用程序
WSGIApplicationGroup%{GLOBAL}
命令拒绝,允许
通融
为了检查调试,我在应用程序中犯了一个语法错误。在重新启动服务器时,我收到一个500服务器错误,但我在任何地方都看不到错误的详细信息。我检查了作为日志添加的两个文件-它们完全是空白的。
/var/log/apache2
中的日志文件也是如此。我在这里遗漏了什么?您是否检查了Apache是否在投票应用程序
目录中具有写访问权限?在生产设置中运行Flask时,而不是使用内置的开发服务器,它会将应用程序异常转换为HTTP 500响应,但不会记录任何内容。所以你所看到的是正常的
如果您是唯一一个查看站点的人,那么您可以临时启用调试模式,就像使用开发服务器自动完成调试一样。有关如何执行此操作,请参见:
具体而言:
app.debug = True
其中“app”是Flask类实例
这将导致在发出请求的浏览器中显示错误的详细信息
在真正的生产系统上,您显然不应该使用它,因此在这种情况下,您应该设置Flask来记录此类应用程序错误。为此,请参见:
如果你运行的是Ubuntu 11.10或更高版本,那么你可能会被它咬到。显然,当Python子进程崩溃时,它应该将stacktrace转储到Apache日志中,但在某些情况下它没有这样做。该bug报告涉及mod_wsgi的维护人员。这位记者在调试这个问题上取得了一些进展,但在2013年就被卡住了,AFAICT的进展从此停止
至少现在,您应该按照Graham Dumpleton的回答,按照Flask文档中的描述为您的应用程序配置一个记录器。如果初始安装失败,您可能希望将记录器配置代码包装在try-except块中。Apache在仍以root用户身份运行时创建日志文件。因此,创建日志文件应该不会有问题。有趣的是,在更仔细地查看mod_wsgi bug报告时,我注意到该bug的当前所有者不是其他Graham Dumpleton.:)