我在使用 mod_python 在我们的 CentOS 服务器上设置 Django 时遇到问题。站点“A”正在运行 PHP(Codeigniter),站点“B”正在运行 Django。我们的 Django 站点运行良好。
但是,每隔一段时间(可能 10 个请求中有 1 个或 2 个请求),站点“A”就会给出 404 错误。通过进一步调查,我发现 Django 全局设置了许多服务器环境变量。例如,查看站点 A 中的 phpinfo() 页面:
_ENV["DJANGO_SETTINGS_MODULE"] mysite.settings
_ENV["REQUEST_URI"] /path/to/my/django/site/page
因为所有请求路径都设置为我的 Django 站点 URL,所以 Codeigniter 是 404ing。
httpd.conf 中的设置是我们在 virtualhost 指令中设置了位置标签。
任何人都可以帮忙吗?
这可能不是您想听到的答案,但无论如何都可以:)
如果你运行你的 Django 站点
mod_wsgi
而不是mod_python
你会看到很多好处:在
mod_wsgi
您可以在守护程序模式下运行,这意味着您的 Django 站点将被隔离在自己的进程中。这意味着环境变量不会在 Apache 环境中全局设置(我认为在您的情况下是由 设置的mod_python
)。这也意味着您可以在不重新启动 Apache 的情况下重新启动 Django 站点。在守护程序
mod_wsgi
模式下,您将只有一个 Python 解释器实例在内存中运行,而不是在每个 Apache 进程中运行一个实例。这是一个巨大的内存节省,给你更多的缓存空间,更多的 Apache 进程等等。mod_wsgi
不仅更稳定,而且足以让我成为众多 Django 开发人员中的一员,每当我们看到有人仍在使用mod_python
. 示例:来自 Django 核心开发者 Jacob Kaplan-Moss 的推文。最后,
mod_wsgi
与零支持和mod_python
.