登录python+;mod_wsgi应用程序

登录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

我在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" 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.:)