I'm using Ubuntu 10.04.
I create a django project under
and create a wsgi file
setting.wsgi in the same directory
Here is the content of
import os import sys path = '/home/wong2/Code/python/django2' if path not in sys.path: sys.path.append(path) os.environ["DJANGO_SETTINGS_MODULE"] = "atest.settings" from django.core.handlers.wsgi import WSGIHandler application = WSGIHandler()
and here is what I add to my my httpd.conf:
<VirtualHost *:80> ServerName localhost WSGIScriptAlias / /home/wong2/Code/python/django2/setting.wsgi <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Allow from all </Directory> <Directory "/home/wong2/Code/python/django2/atest"> Order allow,deny Allow from all </Directory> </VirtualHost>
The problem is, when I visit http://localhost, it says
You don't have permission to access / on this server.
Thanks a lot.
The second directory block doesn't match where you have your WSGI script file installed. It is very bad practice though to stick the WSGI script file in a location where source code or other sensitive files exist, ie., same directory or sub directory. Instead you should stick it in a sub directory of its own. Thus:
WSGIScriptAlias / /home/wong2/Code/python/django2/atest/apache/setting.wsgi <Directory "/home/wong2/Code/python/django2/atest/apache"> Order allow,deny Allow from all </Directory>
So, create 'apache' subdirectory under 'atest'. Move 'setting.wsgi' into that 'apache' subdirectory and change config to above.
Your problem also may be caused by restrictive permisions on your home directory as Apache cannot see inside.
as it explains these permissions problems as well as issues like where to stick your code and the WSGI script file.
With Django 1.5+ you should use the suggested way described in the documentation:
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py WSGIPythonPath /path/to/mysite.com <Directory /path/to/mysite.com/mysite> <Files wsgi.py> Require all granted </Files> </Directory>