您的位置:首页 > 运维架构 > Apache

用Apache 和mod_python部署Django

2009-09-30 16:47 543 查看
参考

《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


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息