Назад | Перейти на главную страницу

Как указать сервер Ubuntu 14.10 Apache2 (mod-wsgi) на конкретную виртуальную среду (Python 3.4 / Flask)?

Я использую apache2 (mod-wsgi) в Ubuntu 14.10. Я получаю 500 внутренних ошибок сервера при обслуживании моего веб-сайта. Я также использую Flask и Python 3.4 и виртуальную среду. Похоже, что в Ubuntu по умолчанию установлен python 2.7, и мне нужно настроить apache2 для поиска виртуальной среды с Python 3.4. В противном случае я получаю ошибку 500. Я проверил файл журнала ошибок apache2, и он показывает, что причина в том, что файл app.wsgi не может импортировать колбу. И, в свою очередь, причина невозможности импорта фляги заключается в том, что она находится в среде Python 3.4, а apache2 - в среде Python 2.7.

Я попытался исправить это, добавив в файл apache2.conf следующую строку:

WSGIPythonHome /path/to/my/virt/env

Но это не работает.

Бинарный файл mod_wsgi скомпилирован для конкретной версии Python. Вы не можете заставить версию mod_wsgi, скомпилированную для Python 2.7, использовать установку Python 3.4.

Насколько я понимаю, Ubuntu предоставляет варианты mod_wsgi как для Python 2, так и для Python 3.

Поэтому вам необходимо удалить один для Python 2 и установить альтернативный для Python 3.

Если у них нет варианта Python 3.4, вам нужно будет удалить пакет Ubuntu для mod_wsgi и собрать mod_wsgi из исходного кода для Python 3.4 и установить его самостоятельно.

В качестве альтернативы рассмотрите возможность использования mod_wsgi-express и запустите его из своей виртуальной среды.