Django Quick Install With WSGI
Django is a high level python web framework that I’ve been hearing a lot about lately. I decided to try it out this weekend.
It took a little reading to get up and running so I documented the steps I took so others can get up and running a little more quickly.
sudo apt-get install django
django-admin –version
Create the appropriate directories and start the django project.
For no real reason I decided to put my new projects in /var/django.
sudo mkdir /var/django
sudo chmod 755 /var/django
cd /var/django
django-admin startproject mysite
cd mysite
mkdir apache
It seems that mod-wsgi is the best way to serve up python web apps due to mod_python being a little outdated. Note that django does come with a built in webserver that is really easy to get going. So if you’re just planning on evaluating the framework and not actually do any production aplications then that would be the way to go. mod_wsgi is an Apache module which can be used to host Python applications.
Install the module:
sudo apt-get install libapache2-mod-wsgi
Now for the configuration. It took me a few tries to get this right.
For now I just put my django site on port 8080 so I can play around without it being public to anyone else.
In the /var/django/mysite/apache directory I created a file called django.wsgi and put this in it:
import os, sys
apache_configuration= os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
sys.path.append(‘/var/django’)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘mysite.settings’
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Make sure that the sys.path.append line contains the directory above the project directory. This one took me awhile to figure out.
I was getting this error until I got it right.
[Sat May 30 15:33:24 2009] [error] [client 127.0.0.1] raise ImportError, “Could not import settings ‘%s’ (Is it on sys.path? Does it have syntax errors?): %s” % (self.SETTINGS_MODULE, e)
[Sat May 30 15:33:24 2009] [error] [client 127.0.0.1] ImportError: Could not import settings ‘mysite.settings’ (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings
Next I added a new virtual host in my sites-enabled folder like this:
<VirtualHost *:808http://localhost:8080/0>
ServerAdmin root@mysite.com
ServerName mysite.com
ServerAlias mysite.com
<Directory /var/django/mysite/apache>
Allow from all
</Directory>
WSGIDaemonProcess www-data
WSGIProcessGroup www-data
WSGIScriptAlias / /var/django/mysite/apache/django.wsgi
</VirtualHost>
After restarting apache :
sudo /etc/init.d/apache2 restart
I got an “It Worked” page when I point my browser to http://localhost:8080/
Of course this doesn’t allow you to use a database in your applications yet but it’s a start.
May 30th, 2009 at
The mod_wsgi site warns you explicitly about the requirements to set up sys.path. See:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango
The documentation on the mod_wsgi site is in general much more in depth that you will find on any particular framework’s site for hosting on mod_wsgi. So, don’t rely on just what is on the framework’s site, got look at the actual mod_wsgi documentation.