登录python+mod_wsgi应用程序

2024-06-16 13:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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>

为了检查调试,我在应用程序中犯了语法错误。在重新启动服务器时,我收到一个500服务器错误,但我在任何地方都看不到错误的详细信息。我检查了作为日志添加的两个文件-它们完全是空白的。/var/log/apache2中的日志文件也是如此。我错过了什么?


Tags: 文件服务器logapp应用程序flaskvarapache
3条回答

您检查过Apache在voting_app目录中是否有写访问权限吗?

在生产设置中运行Flask时,它将把应用程序异常转换为HTTP 500响应,而不记录任何内容,而不是使用内置的开发服务器。所以你看到的是正常的。

如果您是唯一一个查看站点的人,则可以暂时启用调试模式,就像在开发服务器上自动启用一样。有关如何执行此操作,请参见:

http://flask.pocoo.org/docs/quickstart/#debug-mode

具体来说:

app.debug = True

其中“app”是Flask类实例。

这将导致在发出请求的浏览器中显示错误的详细信息。

在真正的生产系统中,显然不应该使用它,因此在这种情况下,应该设置Flask来记录此类应用程序错误。为此,请参见:

http://flask.pocoo.org/docs/errorhandling/

如果你在Ubuntu11.10或更高版本上运行,那么你可能会被这个bug咬到。显然,当Python子进程崩溃时,它应该将stacktrace转储到Apache日志中,但在某些情况下它无法这样做。那个bug报告提到了mod wsgi的维护人员的another bug report。记者在调试这个问题上取得了一些进展,但在2013年就陷入了困境,AFAICT的进展从此停止。

至少现在您应该按照Graham Dumpleton的答案,并按照Flask的文档所述为您的应用程序配置一个记录器。如果初始设置失败,您可能希望将日志程序配置代码包装在try-except块中。

相关问题 更多 >