Deploying GeoDjango

Warning

GeoDjango uses the GDAL geospatial library which is not thread safe at this time. Thus, it is highly recommended to not use threading when deploying – in other words, use an appropriate configuration of Apache or the prefork method when using FastCGI through another Web server.

Apache

In this section there are some example VirtualHost directives for when deploying using either mod_python or mod_wsgi. At this time, we recommend mod_wsgi, as it is now officially recommended way to deploy Django applications with Apache. Moreover, if mod_python is used, then a prefork version of Apache must also be used. As long as mod_wsgi is configured correctly, it does not matter whether the version of Apache is prefork or worker.

Note

The Alias and Directory configurations in the examples below use an example path to a system-wide installation folder of Django. Substitute in an appropriate location, if necessary, as it may be different than the path on your system.

mod_wsgi

Example:

<VirtualHost *:80>
  WSGIDaemonProcess geodjango user=geo group=geo processes=5 threads=1
  WSGIProcessGroup geodjango
  WSGIScriptAlias / /home/geo/geodjango/world.wsgi

  Alias /media/ "/usr/lib/python2.5/site-packages/django/contrib/admin/media/"
  <Directory "/usr/lib/python2.5/site-packages/django/contrib/admin/media/">
    Order allow,deny
    Options Indexes
    Allow from all
    IndexOptions FancyIndexing
  </Directory>

</VirtualHost>

Warning

If the WSGIDaemonProcess attribute threads is not set to 1, then Apache may crash when running your GeoDjango application. Increase the number of processes instead.

For more information, please consult Django’s mod_wsgi documentation.

mod_python

Warning

Support for mod_python will be deprecated in a future release of Django. If you are configuring a new deployment, you are strongly encouraged to consider using mod_wsgi or any of the other supported servers.

Example:

<VirtualHost *:80>

  <Location "/">
    SetHandler mod_python
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE world.settings
    PythonDebug On
    PythonPath "['/var/www/apps'] + sys.path"
  </Location>

  Alias /media/ "/usr/lib/python2.5/site-packages/django/contrib/admin/media/"
  <Location "/media">
    SetHandler None
  </Location>

</VirtualHost>

Warning

When using mod_python you must be using a prefork version of Apache, or else your GeoDjango application may crash Apache.

For more information, please consult Django’s mod_python documentation.

Lighttpd

FastCGI

Nginx

FastCGI