使用mod_wsgi安装Django

4
我使用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。

1
你现在是在说当你使用 '/C:/...' 时出现了拼写错误吗?如果是这样,请承认你已经编辑了你的问题并修复了它,否则会让人感到困惑,不知道我为什么会在第一次指出它是错误的。 - Graham Dumpleton
3个回答

7

您拥有:

WSGIScriptAlias / /C:/Users/Marcos/Documents/mysite/apache/django.wsgi

这是错误的,因为RHS不是有效的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就没有被授予从该目录提供脚本的权限,因此将返回FORBIDDEN(403)。
其次,你确实拥有它,但是没有承认你拥有它,并且该目录或WSGI脚本文件不可读取由Windows下Apache服务运行的用户。

谢谢……这是一个白痴的错误! ;) 之前的打字错误对不起。 - marcoslhc

6

你看过 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文件。您必须在此目录上提供权限。


Alias /media/ /usr/local/django/mysite/media/ 这行代码和第一个目录是为了直接绕过WSGI而提供静态内容的服务。最后的<Directory>是用来干什么的? - Evgeny
最后一个目录是您的Python/Django应用程序和.wsgi文件。 - S.Lott

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接