apache+mod_wsgi下多个python版本

apache+mod_wsgi下多个python版本

我在 redhat 上的同一个 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))

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

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

如果不是,那么最好的选择是什么?

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

答案1

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

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

要使用 Apache/mod_wsgi 作为后端服务器,您可能需要研究使用 mod_wsgi 4.1.X。请参阅:

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

相关内容