热门话题

Php 研究室

Django搭配mod_python    作者:xieaotian发表于2008-08-20 16:08:37

对于上线的django系统,官方推荐的方式是apache带mod_python。 应该是和mod_perl差不多,apache启动的时候就把python代码load到内存中,这些代码将誓与服务器进程共存亡,这样据说可以极大地提高性能。Django需要apache 2.x和mod_python 3.x,你还必须使用apache的prefork MPM。 基本配置: - 编辑httpd.conf文件 SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonDebug On 这将告诉apache,对于所有/mysite/下的URL,请给我使用mod_python。Apache会将DJANGO_SETTINGS_MODULE的值传递给mod_python,这样mod_python会知道该使用哪一个settings。 注意应该把PythonDebug选项关掉,在上线系统中出现问题时,用户会看到你那些丑陋的python trackback。。。 还有一点,用mod_python部署了django之后,每次修改了代码,就不得不重启apache。 下面谈谈一个apache中怎么搞多个django: 很简单,如同虚拟主机那样: NameVirtualHost * ServerName www.example.com
... SetEnv DJANGO_SETTINGS_MODULE mysite.settings
ServerName www2.example.com
... SetEnv DJANGO_SETTINGS_MODULE mysite.other_settings
关于media文件: Django并不会自己去搞media文件,这些都留给了外层的web服务器。 官方推荐的做法是,用独立的web服务器来做(比如lighttpd、TUX 、A stripped-down version of Apache ——说句实话,我还不是很清楚他的意思)。 不过,如果没有选择,当然可以就用apache的这个虚拟主机来搞media文件: SetHandler None 官方给出的下面这个例子中,django被设在根上,而且显式关掉django解析media子目录以及jpg/png/gif文件: SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings SetHandler None SetHandler None 关于admin files 别忘了admin下面的media文件,虽然开发的时候感觉不到,其实也需要我们手工搞定的。 admin的media文件在这里:django/contrib/admin/media 官方文档推荐两种做法: 在你的目录下创建一个到admin media文件的符号链接,这样所有的东西呆在一个地方,而且你还可以进行svn update。 或者干脆一古脑全部拷贝一份到你的apache指定的site目录下去。 关于出错处理 需要注意:mod_python中出现的错误,不会被报到apache的error_log文件中。 如果。。。遇到恐怖的segmentation fault: 如果Apache出现了segmentation fault,有两种原因, 但是和Django都没有关系. 可能是因为你的python代码正在importing "pyexpat" module, 这个模块可能会和Apache自带的版本冲突. 更多信息可参见Expat Causing Apache Crash. 还有一种可能是你在一个apache中同时运行了mod_python和mod_php, 并且使用MySQL作为后台数据库。在某些情况下,由于PHP和python的MySQL的backend会发生冲突,从而导致mod_python的一个问题,详情参阅 mod_python FAQ entry. 如果mod_python仍然出现问题,最简便的方法就是先掐了django,再看看一个barebones的mod_python是否正常工作。这里 [url=http://www.dscpl.com.au/wiki/ModPython/Articles/GettingModPythonWorking]Getting mod_python Working[/url]有详细方法。 (以上文字摘录并翻译自Django官方文档——Using Django with mod_python)

spyler回复于2008-10-02 17:51:42
请问老大,只用apache mod_python python 不用Django 能否作WEB网站程序? 新手请教,不要笑话!
回复主题
Copyright © 2008-2010 版权所属:中国Python联盟 www.okpython.com
京ICP备08012290号 村长QQ:81356625 E-mail:xieaotian@163.com