403 Django和mod_wsgi的禁止错误

时间:2013-07-20 20:52:57

标签: python django apache2 mod-wsgi

我在主目录中创建了Django项目,因此它位于主目录中。

设置

Django Verison  : 1.5.1
Python Version  : 2.7.5
mod_wsgi Version: 3.4
Home Directory  : /home/aettool

/home/aettool/aet/apache/django.wsgi

的内容
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'aet.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

httpd.conf

的联系
WSGIScriptAlias / /home/aettool/aet/apache/django.wsgi

<Directory /home/aettool/aet/apache>
Order deny,allow
Allow from all
</Directory>

error_log

中的错误
[Sun Jul 21 02:01:30.923364 2013] [authz_core:error] [pid 21540:tid 1193011520] [client 10.20.17.184:51340] AH01630: client denied by server configuration: /home/aettool/aet/apache/django.wsgi

urls.py

的内容
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

/home/aettool/aet : 775

的权限

/home/aettool/aet/apache : 755

的权限

django.wsgi file : 664

的权限

我在浏览器403 Forbidden You don't have permission to access / on this server.

上收到错误消息

请帮我解决配置问题。

修改

现在我正在改变

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory />
    Order deny,allow
    Allow from all
</Directory>

所以,这肯定与httpd.conf文件配置有关,但我担心的是我只在该文件中添加了5行而无法弄清楚错误。

5 个答案:

答案 0 :(得分:39)

显然这是一个与Apache 2.4和旧版本相关的问题。 您需要替换apache配置:

Allow from all

Require all granted

<Files wsgi.py>部分

答案 1 :(得分:16)

您可以使用以下内容:

<Directory /home/aettool/aet/apache>
  <IfVersion < 2.3 >
   Order allow,deny
   Allow from all
  </IfVersion>
  <IfVersion >= 2.3>
   Require all granted
  </IfVersion>
</Directory>

答案 2 :(得分:4)

这已在Django票证19319中报道:

https://code.djangoproject.com/ticket/19319

您的Apache配置现在需要以下文件wsgi.py

<Directory /path/to/your/wsgi-script>
<Files wsgi.py>
  Order deny,allow
  Allow from all
  Require all granted
</Files>
</Directory>

答案 3 :(得分:2)

另外还有一个问题:

检查httpd.conf文件以获取以下配置:

<IfModule mime_module>
      AddHandler cgi-script .cgi .pl .py
</IfModule>

这将导致错误。

.py不得配置为CGI脚本

答案 4 :(得分:0)

Linux系统通常不允许其他用户读取主目录,并且由于Apache以root身份运行,因此mod_wsgi将无法访问主目录的内部。 试试:

sudo chmod 755 /home/<username>