我创建了一个文件Flask应用程序,因此我可以测试如何在apache2服务器上部署它。就服务器和WSGI配置而言,我按照Flask上的步骤进行操作。当我指向浏览器中的资源时,它说我没有权限。 WSGI守护程序具有与Flask应用程序相同的权限。以下是VirtualHost配置。
<VirtualHost *:80>
ServerName localhost
WSGIDaemonProcess flask_test user=someuser group=someuser threads=5
WSGIScriptAlias /flask_test/ /var/www/flask_test/flask_test.wsgi
DocumentRoot /var/www/flask_test/
ErrorLog /var/www/flask_test/logs/error.log
<Directory /var/www/flask_test/>
WSGIProcessGroup flask_test
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Order deny,allow
Deny from all
</Directory>
</VirtualHost>
这是WSGI文件
import sys
activate_this = '/home/someuser/pyProjects/general/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
sys.path.append('/home/someuser/pyProjects')
from general import test as application
最后是error.log的输出
[Tue Jul 31 01:51:18 2012] [error] Exception KeyError: KeyError(140345719740224,) in <module 'threading' from '/usr/lib/python2.6/threading.pyc'> ignored
[Tue Jul 31 01:51:21 2012] [error] [client 108.207.222.48] client denied by server configuration: /var/www/flask_test/flask_test.wsgi
[Tue Jul 31 01:51:21 2012] [error] [client 108.207.222.48] client denied by server configuration: /var/www/flask_test/favicon.ico
编辑:实施Graham Dumpleton后,建议服务器现在返回代码500并出现以下错误
TypeError: 'module' object is not callable
答案 0 :(得分:2)
一般想要:
WSGIScriptAlias /flask_test/ /var/www/flask_test/flask_test.wsgi
子URL的挂载点上没有斜杠。
更糟糕的是你有:
Deny from all
所以你明确告诉Apache禁止返回。
你应该:
Allow from all
在那种情况下。
答案 1 :(得分:2)
问题出在.wsgi文件中。
我没有正确导入app对象。基本上你想确保在wsgi中将app对象导入为应用程序。例如from flask_test import app as application