![使用 mod_wsgi 运行 Python 的 Apache](https://linux22.com/image/594548/%E4%BD%BF%E7%94%A8%20mod_wsgi%20%E8%BF%90%E8%A1%8C%20Python%20%E7%9A%84%20Apache.png)
我需要帮助设置本地 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