参考
《The Django Book》
mod_python (http://www.djangoproject.com/r/mod_python/)是一个在Apache中嵌入Python的Apache插件,它在服务器启动时将Python代码加载到内存中。同时Django要求Apache2.x和mod_python3.x。
首先需要在Apache配置文件中,加载mod_python。
LoadModule python_module /usr/lib/apache2/modules/mod_python.so
编辑Apache的配置文件,如下
<Location "/711/"> SetHandler python-program PythonPath "['/home/mycode']+sys.path" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonDebug On </Location>
我将这两个修改放在了httpd.conf
其实,最好的是设置写到site-available中,文件命名为django-web.conf。然后
运行
sudo a2ensite django-web.conf,
然后在site-enable中出现一个连接。
同理,运行
sudo a2enmod mod_python
讲启用mod_python。
要确保把 DJANGO_SETTINGS_MODULE 中的 mysite.settings 项目换成与你的站点相应的内容。
同时指明mysite这个app的路径,如上的'/home/mycode‘
它告诉 Apache,任何在 / 711/这个路径之后的 URL 都使用 Django 的 mod_python 来处理。它 将 DJANGO_SETTINGS_MODULE 的值传递过去,使得 mod_python 知道这时应该使用哪个配置。
这时候,所有的URL都需要以711开头了。
如
urlpatterns = patterns('', # Example: (r'^711/index/$', 'webcontrol.foo.web'), (r'^711/index/page.html$', 'webcontrol.foo.pop'), (r'^711/auth/$', 'webcontrol.foo.auth'), (r'^711/auth/page.html$', 'webcontrol.foo.pop'), (r'^711/refresh/$', 'webcontrol.foo.refresh'), (r'^711/refresh/page.html$', 'webcontrol.foo.pop'), (r'^711/firewall/$', 'webcontrol.foo.firewall'), (r'^711/firewall/page.html$', 'webcontrol.foo.pop'), (r'^711/auto/$', 'webcontrol.foo.auto'), (r'^711/auto/page.html$', 'webcontrol.foo.pop'), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # (r'^admin/(.*)', admin.site.root), )
最后,修改mystie里面的setting.py
DEBUG = False TEMPLATE_DEBUG = False