Apache-2.2

apache+mod_wsgi下的多個python版本

  • December 27, 2015

我在redhat上的同一個apache實例下配置了幾個虛擬主機:

  • apache-2.2.15
  • 使用預設系統 python-2.6 編譯的 mod_wsgi-3.5

對於每個虛擬主機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 版本編譯的,所以我不確定它是否能處理這種情況。

不,這是不可能的。mod_wsgi 二進製文件只能針對一個 Python 版本進行編譯,並且一次只能將一個已編譯的 mod_wsgi 模組實例載入到 Apache 中。

您需要做的是將 Apache 設置為代理到一個單獨的 WSGI 伺服器,該伺服器在其自己的埠上偵聽。

要將 Apache/mod_wsgi 也用作該後端伺服器,您需要使用 mod_wsgi 4.1.X 進行調查。看:

這個較新版本的 mod_wsgi 提供了一種針對多個 Python 版本安裝 mod_wsgi 並使用提供的腳本為每個版本執行 Apache 實例的方法。該腳本接管了 Apache 配置的所有設置,因此您無需擔心。

引用自:https://serverfault.com/questions/599859