Django全局设置环境variables

我在使用mod_python在CentOS服务器上设置Django时遇到问题。 站点“A”运行PHP(Codeigniter),站点“B”运行Django。 我们的Django网站运行完美。

然而,每隔一段时间(可能是10个请求中的1个或2个请求),站点“A”给出了404错误。 经过进一步调查,我发现Django在全球设置了许多服务器环境variables。 例如,查看站点A中的phpinfo()页面:

_ENV["DJANGO_SETTINGS_MODULE"] mysite.settings _ENV["REQUEST_URI"] /path/to/my/django/site/page 

由于所有请求path都设置为我的Django站点URL,Codeigniter是404ing。

httpd.conf中的设置是我们在虚拟主机指令中设置了位置标签。

谁能帮忙?

这可能不是你想听到的答案,但无论如何,这里:)

如果你在mod_wsgi而不是mod_python下运行你的Django站点,你将会看到很多好处:

  1. mod_wsgi下,你可以运行在守护进程模式下,这意味着你的Django站点将被隔离在它自己的进程中。 这意味着环境variables不会在Apache环境中全局设置(我认为你的情况是由mod_python设置的)。 这也意味着你可以在不重启Apache的情况下重新启动Django站点。

  2. 使用守护进程模式下的mod_wsgi ,您将只有一个Python解释器实例在内存中运行,而不是每个Apache进程中的一个实例。 这是一个巨大的内存节省,让你有更多的空间caching,更多的Apache进程,无论如何。

  3. mod_wsgi不仅更稳定,而且足以让我成为众多Django开发者中的一员,只要我们看到有人仍在使用mod_python就会拍我们的前额。 示例: 来自Django核心开发者Jacob Kaplan-Moss的推文 。

  4. 最后, mod_wsgimod_python零支持和糟糕的bug更快,并且拥有出色的社区支持。