使用mod_wsgi安装Django
我用Django 1.0写了一个应用程序。在Django的测试服务器上运行得很好。但是,当我想把它放到更像生产环境的Apache服务器上时,应用程序却无法运行。
我使用的服务器是WAMP2.0。我已经做了多年的PHP程序员,一直在使用WAMPServer。
我安装了mod_wsgi.so,似乎运行得不错(没有服务错误),但我无法配置httpd.conf,让它能找到我放在服务器根目录外的Python脚本。
现在,我暂时可以接受覆盖文档根目录,从文档根目录提供Django应用程序,所以httpd.conf的配置应该是这样的:
WSGIScriptAlias / C:/Users/Marcos/Documents/mysite/apache/django.wsgi
但是服务器的响应却是403 Forbidden(禁止访问)。
3 个回答
mod_wsgi的文档写得很好。你可以试试他们的快速配置指南,从那里开始了解:http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
你有没有看过这个链接:http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango?
为了确保Apache能正常工作,你需要写的不止一行代码。
Alias /media/ /usr/local/django/mysite/media/
<Directory /usr/local/django/mysite/media>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /usr/local/django/mysite/apache/django.wsgi
<Directory /usr/local/django/mysite/apache>
Order deny,allow
Allow from all
</Directory>
这里的<Directory>
标签,以及正确的文件夹拥有权和权限设置都是非常重要的。
目录usr/local/django/mysite/apache
里放着你的Python/Django应用和一个非常重要的文件django.wsgi
。你必须为这个目录设置合适的权限。
你有:
WSGIScriptAlias / /C:/Users/Marcos/Documents/mysite/apache/django.wsgi
这个是错的,因为右边的部分不是一个有效的Windows路径名。应该使用:
WSGIScriptAlias / C:/Users/Marcos/Documents/mysite/apache/django.wsgi
也就是说,在Windows驱动器说明符前面不要加斜杠。
除此之外,按照其他人提到的mod_wsgi文档去做就可以了。
发帖者修改了问题,把原本看起来像是拼写错误的部分改了,而不是他配置上的问题。
如果真是这样,接下来导致403错误的原因如下。
首先,你需要确保有:
<Directory C:/Users/Marcos/Documents/mysite/apache>
Order deny,allow
Allow from all
</Directory>
如果没有这个,Apache就没有权限从那个目录提供脚本,所以会返回禁止访问(403)错误。
其次,如果你有这个,但没有意识到你已经有了,并且那个目录或者WSGI脚本文件对Apache服务运行的用户来说是不可读的,也会导致问题。