问题
I am trying to use Django with Apache (and mod_wsgi). With the default Django webserver everything was going well, but now I get 403 (access forbidden) error when trying to load the page. I searched previous posts here and read official docs but the solutions there weren't helpful.
Here are the lines from my httpd.conf:
WSGIScriptAlias / /home/karlis/django/apache/django.wsgi
<Directory /home/karlis/django/apache>
Order allow,deny
Allow from all
</Directory>
Alias /media/ /home/karlis/django/media
<Directory /home/karlis/django/media>
Order deny,allow
Allow from all
</Directory>
Permissions are set to 770 and there is sticky bit set to all folders under /home/karlis/django. I have django 1.2.3, mod_wsgi 3.2, apache 2.2.15 and I run Arch Linux.
What I am doing wrong here?
Thanks in advance! -skazhy
回答1:
Apache runs as a special user, it will not be able to read stuff with permissions of 770.
Watch the talk at:
http://code.google.com/p/modwsgi/wiki/WhereToGetHelp?tm=6#Conference_Presentations
which explains things about permissions.
The key for working out the problem is what error message appears in your Apache error log. You do not even state what error messages you get in the log file. The talk linked to shows what those error messages might be and what they mean.
回答2:
There is one other gotcha:
Check your httpd.conf file for the following configuration:
<IfModule mime_module>
AddHandler cgi-script .cgi .pl .py
</IfModule>
This will cause the error.
.py MUST NOT be configured as a CGI script
回答3:
Try this instead your directories statements:
<Location />
Order Allow,Deny
Allow from all
</Location>
来源:https://stackoverflow.com/questions/3749331/django-with-mod-wsgi-returns-403-error