2013-07-20 7 views
29

J'ai créé le projet Django dans le répertoire personnel de sorte qu'il se trouve dans le répertoire personnel.403 Erreur interdite avec Django et mod_wsgi

Setup

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

Contenu de /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() 

Contect de httpd.conf

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

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

erreur dans 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 Contenu de

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)), 
) 

Permission de /home/aettool/aet : 775

Permission de /home/aettool/aet/apache : 755

Permission de django.wsgi file : 664

J'obtiens l'erreur sur le navigateur 403 ForbiddenYou don't have permission to access/on this server.

S'il vous plaît, aidez-moi à la configuration.

EDIT

Pour l'instant, je me déplace vers l'avant en changeant

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

à

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

Donc, cela a certainement quelque chose à voir avec httpd.conf configuration de fichier, mais mon inquiétude est que j'ai seulement ajouté 5 lignes dans ce fichier et ne pas être en mesure de comprendre ce qui ne va pas.

+0

S'il vous plaît nous montrer votre 'urls.py' –

+0

ajouté dans la question – g4ur4v

+1

Dupe: http://stackoverflow.com/questions/4807176/apache-mod-wsgi-error-forbidden-you-dont-have -permission-to-access-on-this-s? rq = 1 –

Répondre

39

Apparemment, il s'agit d'un problème lié à Apache 2.4 et versions antérieures. Vous devez remplacer dans votre configuration apache:

Allow from all 

avec

Require all granted 

dans la section <Files wsgi.py>

+2

Cela m'a rendu fou –

16

Vous pouvez utiliser les éléments suivants:

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

Sur les anciennes versions d'apache, il sera nécessaire pour activer le mod "version" avec '' 'sudo a2enmod version''' – azmeuk

2

Il y a un autre gotcha:

Vérifiez votre httpd.Fichier conf pour la configuration suivante:

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

Cela provoquera l'erreur.

.py NE DOIT PAS être configuré en tant que script CGI

+0

C'était tout pour moi. Merci. –

4

Cela a été rapporté dans le billet Django 19319:

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

Votre config Apache doit maintenant ce qui suit pour votre fichier wsgi.py.

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

Cela a fonctionné, mais avec pas vers wsgi-script – eli