在apache2上部署烧瓶WSGI应用程序的问题

时间:2012-07-31 02:07:13

标签: python apache2 flask wsgi

我创建了一个文件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

2 个答案:

答案 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