2005-07-19 19:55:18 +00:00
|
|
|
=================================
|
|
|
|
How to use Django with mod_python
|
|
|
|
=================================
|
|
|
|
|
2005-07-19 20:01:49 +00:00
|
|
|
Apache/mod_python currently is the preferred setup for using Django on a
|
2005-07-19 19:55:18 +00:00
|
|
|
production server.
|
|
|
|
|
2005-07-19 20:05:52 +00:00
|
|
|
mod_python, available at http://www.modpython.org/ , is similar to
|
|
|
|
`mod_perl`_ : It embeds Python within Apache and loads Python code into memory
|
|
|
|
when the server starts. Code stays in memory throughout the life of an Apache
|
|
|
|
process, which leads to significant performance gains over other server
|
|
|
|
arrangements.
|
2005-07-19 19:55:18 +00:00
|
|
|
|
|
|
|
To configure Django with mod_python, first make sure you have Apache installed,
|
|
|
|
with the mod_python module activated.
|
|
|
|
|
|
|
|
Then edit your ``httpd.conf`` file and add the following::
|
|
|
|
|
|
|
|
<Location "/mysite/">
|
|
|
|
SetHandler python-program
|
|
|
|
PythonHandler django.core.handlers.modpython
|
|
|
|
SetEnv DJANGO_SETTINGS_MODULE myproject.settings.main
|
|
|
|
PythonDebug On
|
|
|
|
</Location>
|
|
|
|
|
|
|
|
...and replace ``myproject.settings.main`` with the path to your settings file,
|
|
|
|
in dotted-package syntax.
|
|
|
|
|
2005-07-19 20:05:52 +00:00
|
|
|
This tells Apache: "Use mod_python for any URL at or under '/mysite/', using the
|
|
|
|
Django mod_python handler." It passes the value of ``DJANGO_SETTINGS_MODULE``
|
|
|
|
so mod_python knows which settings to use.
|
|
|
|
|
|
|
|
Also, if you've manually altered your ``PYTHONPATH`` to put your Django project
|
|
|
|
on it, you'll need to tell mod_python::
|
|
|
|
|
|
|
|
PythonPath "['/path/to/project'] + sys.path"
|
|
|
|
|
|
|
|
You can also add directives such as ``PythonAutoReload Off`` for performance.
|
|
|
|
See the `mod_python documentation`_ for a full list of options.
|
|
|
|
|
2005-07-19 19:55:18 +00:00
|
|
|
Restart Apache, and any request to /mysite/ or below will be served by Django.
|
|
|
|
Note that Django's URLconfs won't trim the "/mysite/" -- they get passed the
|
|
|
|
full URL.
|
|
|
|
|
2005-07-19 20:05:52 +00:00
|
|
|
When deploying Django sites on mod_python, you'll need to restart Apache each
|
|
|
|
time you make changes to your Python code.
|
|
|
|
|
2005-07-19 19:55:18 +00:00
|
|
|
Here's a template for an admin configuration::
|
|
|
|
|
|
|
|
<Location "/admin/">
|
|
|
|
SetHandler python-program
|
|
|
|
PythonHandler django.core.handlers.modpython
|
|
|
|
SetEnv DJANGO_SETTINGS_MODULE myproject.settings.admin
|
|
|
|
PythonDebug On
|
|
|
|
</Location>
|
|
|
|
|
|
|
|
The only thing different here is the ``DJANGO_SETTINGS_MODULE``.
|
2005-07-19 20:05:52 +00:00
|
|
|
|
|
|
|
.. _mod_perl: http://perl.apache.org/
|
|
|
|
.. _mod_python documentation: http://modpython.org/live/current/doc-html/directives.html
|