Difference between revisions of "Django/Apache"
(New page: Setting up Django on Apache 2 is relatively straightforward, but with a few kinks noted herewith. == Django Requirements == * Python >= 2.4 * Apache 2 * mod_python - Apache module to supp...) |
|||
| Line 63: | Line 63: | ||
For chunky sites, have all the static content served from a separate box using a lightweight HTTP server (lighttpd). | For chunky sites, have all the static content served from a separate box using a lightweight HTTP server (lighttpd). | ||
| − | == | + | == External Links == |
| − | * Django | + | * [http://www.djangoproject.com/documentation/ Django documentation] - [http://www.djangoproject.com/documentation/modpython/ "How to use Django with mod_python"]. |
| + | * The [http://www.djangoproject.com/ Django Project] home page | ||
| + | * [http://code.djangoproject.com/ Django Trac] bug/ticket tracking. | ||
[[Category:Django]] [[Category:Python]] [[Category:Apache]] | [[Category:Django]] [[Category:Python]] [[Category:Apache]] | ||
Revision as of 21:54, 29 January 2009
Setting up Django on Apache 2 is relatively straightforward, but with a few kinks noted herewith.
Django Requirements
- Python >= 2.4
- Apache 2
- mod_python - Apache module to support Python code, similar to mod_perl
- PostgreSQL >= 8.0
- python-psycopg2 - PostgreSQL client library for Python
- python-imaging - Python Imaging library
- memcached and python-memcache (optional but reccommended)
Preparation
Django can be installed from the Debian packaged version, or fetched with SVN or with git from the Catalyst Django git mirror. and mod_python and psycopg2 can be simply installed using apt-get:
apt-get install python-django libapache2-mod-python python-psycopg2
Also, check the mod_python Apache module is enabled:
a2enmod mod_python
Example Apache VHost configuration
<VirtualHost * >
DocumentRoot /var/www/django/clientsite
ServerName www.clientsite.co.nz
ServerAlias clientsite.co.nz
# Enable mod_python handler and django config
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/var/www/django'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE clientsite.settings
PythonDebug Off
</Location>
# disable mod_python for static content - adjust as required
<Location "/media">
SetHandler None
</Location>
# some variation on the following - omit or adjust as required
<LocationMatch "\.(jpg|gif|png)$">
SetHandler None
</LocationMatch>
</VirtualHost>
This config enables the mod_python handler for the root / URL, and disables it for the media subdirectory and image URLs. Features to note:
- The PythonPath setting. Note that the path added here is the parent directory of the document root.
- The DJANGO_SETTINGS_MODULE environment variable
- PythonDebug - should be explicitly set to "off"
Static Content
If you are using the django admin interface from the Debian python-django package, you will need to create a symbolic link to the admin media folder in the clientsite directory, for example:
ln -s /usr/share/python-support/python-django/django/contrib/admin/media /var/www/django/clientsite/media
Alternitavely one could configure the Location directive to fetch content from the original path.
For chunky sites, have all the static content served from a separate box using a lightweight HTTP server (lighttpd).
External Links
- Django documentation - "How to use Django with mod_python".
- The Django Project home page
- Django Trac bug/ticket tracking.