У меня есть несколько виртуальных хостов, настроенных под одним и тем же экземпляром apache на redhat:
Для каждого виртуального хоста 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 в одном экземпляре apache + mod_wsgi?
Если нет, что было бы лучше всего продолжить?
Есть соответствующий WsgiPythonHome
параметр, но он определяется глобально в контексте «конфигурации сервера», а не для каждого виртуального хоста. Кроме того, mod_wsgi скомпилирован для конкретной версии Python, поэтому я не уверен, что он справится с этим случаем.
Нет, это невозможно. Бинарный файл mod_wsgi должен быть скомпилирован только для одной версии Python, и только один экземпляр скомпилированного модуля mod_wsgi может быть загружен в Apache за раз.
Что вам нужно сделать, так это настроить Apache для прокси на отдельный сервер WSGI, прослушивающий его собственные порты.
Чтобы использовать Apache / mod_wsgi в качестве бэкэнд-сервера, вам следует изучить его с помощью mod_wsgi 4.1.X. Видеть:
Эта новая версия mod_wsgi предоставляет способ установки mod_wsgi для нескольких версий Python и запуска экземпляра Apache для каждой с использованием предоставленного сценария. Сценарий берет на себя всю настройку конфигурации Apache, поэтому вам не нужно об этом беспокоиться.