使用 mod_wsgi 运行 Python 的 Apache

使用 mod_wsgi 运行 Python 的 Apache

我需要帮助设置本地 Apache2 来运行 Python。它能够在运行 Mountain Lion 的 Mac 上与 html、php 和 mysql 完美配合。

Python 正在运行。通过 MacPorts 安装了 mod_wsgi,并在将以下内容添加到 httpd.conf 后检查它是否被 Apache 加载:

LoadModule wsgi_module modules/mod_wsgi.so
<Directory /opt/local/apache2/htdocs>
AddHandler wsgi-script .py
Options +ExecCGI
Order deny,allow
Allow from all
</Directory>

将我的 index.py 文件放入 htdocs:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

授予整个路径 /opt/local/apache2/htdocs/index.py chmod 777 权限

无论我做什么,当转到 localhost/index.py 时,我总是收到“禁止访问。您无权访问此服务器上的 /index.py。”的提示。

Apache 错误日志显示:

[Thu Aug 30 17:46:46 2012] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /opt/local/apache2/htdocs/index.py, referer: http://localhost/

我该如何解决此权限问题?什么是 Options ExecCGI?

答案1

尝试使用 .wsgi 扩展名而不是 .py。您的 Apache 设置中可能存在冲突的定义,该定义表明 .py 是 CGI 脚本。此外,在设置 mod_wsgi 时,请优先使用 WSGIScriptAlias 而不是 AddHandler 方法。请参阅文档:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines

相关内容