apache+mod_wsgi下的多个python版本

ale*_*cxe 4 redhat python mod-wsgi virtualhost apache-2.2

我在 redhat 上的同一个 apache 实例下配置了几个虚拟主机:

  • apache-2.2.15
  • mod_wsgi-3.5 使用默认系统 python-2.6 编译

对于每个虚拟主机WSGIScriptAlias设置都指向激活虚拟环境的 python 文件:

activate_this = '/path_to_the_virtualenv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
Run Code Online (Sandbox Code Playgroud)

现在,我计划将其中一个项目升级到 python-2.7,另一个升级到 python-3.x。我知道我可以有不同的虚拟环境,单独的 python 沙箱。因此,python 方面的一切都很好。

问题是:在同一个apache+mod_wsgi实例下,不同的apache虚拟主机可以使用不同的python版本吗?

如果没有,继续进行的最佳选择是什么?

有一个相关的WsgiPythonHome设置,但它是在“服务器配置”上下文中全局定义的,而不是每个虚拟主机。另外,mod_wsgi 是为特定的 python 版本编译的,所以我不确定它是否可以处理这种情况。

Gra*_*ton 17

不,这是不可能的。mod_wsgi 二进制文件只能针对一个 Python 版本进行编译,并且一次只能将一个已编译的 mod_wsgi 模块的实例加载到 Apache 中。

您需要做的是设置 Apache 代理到一个单独的 WSGI 服务器,监听它自己的端口。

要将 Apache/mod_wsgi 也用作后端服务器,您需要使用 mod_wsgi 4.1.X 进行调查。看:

这个较新版本的 mod_wsgi 提供了一种针对多个 Python 版本安装 mod_wsgi 并使用提供的脚本为每个版本运行一个 Apache 实例的方法。该脚本接管了 Apache 配置的所有设置,因此您无需担心。