用Apache 和mod_python部署Django

参考

《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

 

你可能感兴趣的:(用Apache 和mod_python部署Django)