当尝试使用Apache + mod_wsgi运行Flask时,我已经尝试了很多事情以达到高度挫败感。
基本上我已经完成了以下教程:
http://flask.pocoo.org/docs/deploying/mod_wsgi/#installing-mod-wsgi http://www.lonesomedev.com/?p=169
但是在浏览器上我收到以下错误:
禁止访问!
您无权访问请求的对象。它受读保护或服务器无法读取。
如果您认为这是服务器错误,请与网站管理员联系。
在Apache error.log中有以下内容:
[Fri May 03 17:17:06 2013] [错误] [client :: 1]客户端被服务器配置拒绝:/home/user1/Develop/flask_dbadmin.wsgi
我正在运行OpenSuse 11.4。
答案 0 :(得分:8)
如果您在这里尝试了Apache2: 'AH01630: client denied by server configuration'提及的内容并且仍然无法正常工作,那么您的wsgi脚本别名路径可能会在<Directory>
块中提到的路径之外。
每个别名都需要<Directory>
或<Location>
块。
例如,
有
WSGIScriptAlias / /home/stark/FlaskApp/flaskapp.wsgi
你需要
<Directory /home/stark/FlaskApp>
Require all granted
</Directory>
答案 1 :(得分:2)
听起来Apache无法访问相关对象。确保您为此特定原因设置了帐户,并让文件访问此帐户。然后使用chown
为该用户设置对这些文件的访问权限。在开发环境中,例如可以是Apache帐户。
chown -R wwwrun:www /home/user1/Develop/
或者你可以给所有人访问,但我不建议这样做。
chmod 777 -R /home/user1/Develop/
如果这不起作用,您可能需要手动允许访问apache配置中的wsgi文件。
看起来应该是这样的。
WSGIDaemonProcess flask_dbadmin user=wwwrun group=www threads=5
<VirtualHost *:80>
........
<Directory /home/user1/Develop/ >
Order allow,deny
Allow from all
</Directory>
<Files flask_dbadmin.wsgi>
Order allow,deny
Allow from all
</Files>
</VirtualHost>