Warning
基于 GEOS 和 GDAL 的 GeoDjango 暂时还不是线程安全的。这样,我们 极力 推荐 在部署的时候不要使用线程 – 换句话说,推荐使用Apache进行部署或者用预先创建号的 FastCGI 来访问其他网络服务器。
在本节里,将讲述如何基于 VirtualHost 目录并利用 mod_python 或者 mod_wsgi 进行部署。针对GeoDjango,我们推荐 试用 mod_wsgi ,因为他已经是Django的官方推荐。而且,如果采用 mod_python ,那么必须使用一个预先生成版本的Apache。 而对于 mod_wsgi ,只要其正确配置,无论什么版本的 Apache 都将适用。
Note
在下面的例子中, Alias 和 Directory 的路径是基于整个系统的。如果需要,您可以替换目录,但是这些路径可能随着 您系统的不同而变化。
实例:
<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
如果 WSGIDaemonProcess 的 threads 属性被设置为 1 ,那么Apache在运行GeoDjango时可能崩溃。请酌情增加 processes 的数量。
更多详情请参考 mod_wsgi 文档.
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
当使用 mod_python 模块在一个预先创建的 Apache 上时,您的GeoDjango很可能导致Apache崩溃。
更多详情请参考 mod_python 文档.