我在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
中的日志文件也是如此。我错过了什么?
您检查过Apache在
voting_app
目录中是否有写访问权限吗?在生产设置中运行Flask时,它将把应用程序异常转换为HTTP 500响应,而不记录任何内容,而不是使用内置的开发服务器。所以你看到的是正常的。
如果您是唯一一个查看站点的人,则可以暂时启用调试模式,就像在开发服务器上自动启用一样。有关如何执行此操作,请参见:
http://flask.pocoo.org/docs/quickstart/#debug-mode
具体来说:
其中“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块中。
相关问题 更多 >
编程相关推荐