Mac OS X Snow Leopard上的MOD_WSGI问题
我今天整整一天都在尝试在我的Mac OS X Snow Leopard上通过XAMPP让MOD_WSGI在Apache上运行,但一直没有成功。我按照所有的说明操作,网上也查了很多解决办法,但都没用。下面是我具体的步骤和细节。当我访问localhost时,只看到一个白屏。如果我把httpd.conf文件中的“LoadModule wsgi_module modules/mod_wsgi.so
”这一行去掉,localhost就能正常运行。
- 下载并安装了Xcode。
- XAMPP已经安装并正常工作。
- 我不需要安装Python,因为OS X自带64位的Python 2.6。
- 下载并解压mod_wsgi-2.6.tar.gz到桌面。
- 在终端输入"./configure --with-apxs=/Applications/XAMPP/xamppfiles/bin/apxs --with-python=/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6"(没有错误)。
- 在终端输入"make"(显示消息"make: Nothing to be done for `all'.")。
- 在终端输入"sudo make install"(没有错误)。
- 在XAMPP的httpd.conf文件中添加:
LoadModule
wsgi_module modules/mod_wsgi.so
AddType text/html .py
WSGIScriptAlias /app-sample "/Applications/xampp/xamppfiles/htdocs/app-sample/main.py"
<Directory "/Applications/xampp/xamppfiles/htdocs/app-sample">
Order deny,allow
Allow from all
</Directory>
- 通过XAMPP重启Apache。
1 个回答
首先,运行 'make distclean',然后重新执行 configure/make/make install 来安装 mod_wsgi。你看到的 'Terminal "make" (message "make: Nothing to be done for `all'.")' 说明之前的构建结果还在目录里,这次执行 make 没有生成新的内容。
接下来,使用 '.wsgi' 后缀,而不是 '.py',这样可以避免和已有的定义冲突,因为 '.py' 文件可能被设置为以 CGI 脚本的方式执行。这是导致空白响应的一个常见原因。查看 Apache 的错误日志,应该能找到一些线索,说明这是问题所在。
另外,你的示例应用程序是做什么的?有没有按照 mod_wsgi 网站上的文档,先试试一个简单的 hello world 程序,而不是直接用自己的程序。如果只用自己的程序,可能会因为 Apache 和 Python 模块之间的共享库冲突,导致 Apache 进程崩溃,这也是导致空白响应的原因之一。再次仔细检查 Apache 的错误日志,看看请求时记录了什么信息。
最后,你的程序可能有 bug,返回的 HTML 响应中可能有语法错误,导致无法显示。让浏览器显示请求返回页面的源代码,确保它不是格式错误的 HTML。