mar*_*lhc 4 python apache django mod-wsgi
我使用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
你有:
WSGIScriptAlias / /C:/Users/Marcos/Documents/mysite/apache/django.wsgi
Run Code Online (Sandbox Code Playgroud)
这是错误的,因为RHS不是有效的Windows路径名.使用:
WSGIScriptAlias / C:/Users/Marcos/Documents/mysite/apache/django.wsgi
Run Code Online (Sandbox Code Playgroud)
也就是说,在Windows驱动器说明符之前没有前导斜杠.
除此之外,请遵循其他人指出的mod_wsgi文档.
海报编辑了一个问题来改变现在看起来在帖子中的拼写错误,而不是他的配置问题.
如果是这种情况,403的下一个原因如下.
首先,你还需要:
<Directory C:/Users/Marcos/Documents/mysite/apache>
Order deny,allow
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
如果您没有,那么Apache没有被授予从该目录提供脚本的权限,因此将返回FORBIDDEN(403).
其次是你确实拥有它,但不承认你这样做,并且用户无法读取该目录或WSGI脚本文件,因为Apache服务在Windows下运行.
你看过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>
Run Code Online (Sandbox Code Playgroud)
的<Directory>,以及适当的文件系统的所有权和权限是必不可少的.
该usr/local/django/mysite/apache目录包含您的Python/Django应用程序和最重要的django.wsgi文件.您必须提供此目录的权限.