将mod_wsgi模块添加到apache的正确方法

时间:2013-05-15 19:57:43

标签: python macos apache

我正在尝试在mac osx上的默认apache服务器中安装mod_wsgi模块。我正在关注this guy's tutorial.我已经到了将模块添加到apache配置的部分,我插入了这两行:

$ sudo nano /private/etc/apache2/httpd.conf
...
LoadModule wsgi_module libexec/apache2/mod_wsgi.so
WSGIScriptAlias / /Library/WebServer/Documents/
...

回到终端我输入:

sudo /usr/sbin/apachectl restart

当我在浏览器中访问localhost / testpy.py时,出现错误,指出无法连接到本地主机。这是我的testpy.py文件:

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]

修改

当我添加了这两行代码时,apache错误日志不会产生任何结果。当我把它们拿出去并在我在错误日志中得到它之前转到我知道正在工作的URL:

caught SIGTERM, shutting down
Init: Session Cache is not configured [hint: SSLSessionCache]
httpd: Could not reliably determine the server's fully qualified domain name, using my-machine.local for ServerName
Digest: generating secret for digest authentication ...
Digest: done
Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/0.9.8r configured -- resuming normal operations

2 个答案:

答案 0 :(得分:0)

遗憾的是,您所遵循的教程没有帮助。当您浏览它们时,WSGI实际上并不是一种只运行Python文件的方法:您已经可以直接使用CGI执行此操作。使用WSGI的常用方法是创建一个应用程序,通过运行wsgi文件为特定前缀(可能为空)下的所有URL提供服务。

所以,你有三个问题。首先,您的WSGIScriptAlias需要指向一个实际文件,在本例中是您的testpy.py文件:

WSGIScriptAlias / /Library/WebServer/Documents/testpy.py

其次,该文件需要是有效的Python:也就是说,它需要正确缩进,因为缩进在Python中很重要。

第三,由于别名指向/,这是您应该访问的网址。

答案 1 :(得分:0)

请注意,将WSGIScriptAlias设置为与DocumentRoot相同的目录是一个坏主意。

实际问题可能是你应该:

WSGIScriptAlias / /Library/WebServer/Documents

即,从目录路径中删除尾部斜杠。

您或许也应该阅读官方的mod_wsgi文档:

将目标作为WSGI脚本文件的目录不一定是最合适的事情,请查看文档以了解其他选项。

使用一些随意的博客文章几乎不能替代官方文档。