Django/Apache
From Jon's Wiki
Setting up Django on Apache 2 is relatively straightforward, but with a few kinks noted herewith.
Django Requirements
- Python >= 2.4
- Apache 2
- mod_wsgi - Apache module for Python apps
- PostgreSQL >= 8.0
- python-psycopg2 - PostgreSQL client library for Python
- python-imaging - Python Imaging library
- memcached and python-memcache (optional but recommended)
Preparation
Django can be installed from the Debian packaged version, and mod_wsgi and psycopg2 can be simply installed using apt-get:
apt-get install python-django libapache2-mod-wsgi python-psycopg2
Check the mod_python Apache module is enabled:
a2enmod wsgi
Example Apache VHost configuration
<VirtualHost *:80> ServerName www.clientsite.co.nz # static content (for now, but separate domain best) AliasMatch /([^/]*\.(gif|png|jpg)) /path/to/myproject'/static/$1 <Directory /path/to/myproject/static> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /path/to/myproject/django.wsgi </VirtualHost>
Example WSGI file
This would go in the /path/to/myproject/django.wsgi file, as specified in the Apache WSGIScriptAlias directive.
import os import sys # You may also need to add the Django path path = "/path/to/myproject" if path not in sys.path: sys.path.append(path) os.environ["DJANGO_SETTINGS_MODULE"] = "myproject.settings" import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()