Развертывание приложения Python Flask на Apache с установленной версией Python только в виртуальной среде

Я работаю в среде разработки CentOS7. Машина поставлялась с предустановленным Python 2.7.5. Я разработал веб-приложение с использованием Python 3.5.1, которое вместе с его зависимостями было установлено только в виртуальной среде. Python 3 не устанавливается на всю машину. Я сейчас пытаюсь развернуть приложение на сервере Apache, но столкнулся с проблемой. Вот что я сделал.

Я установил mod_wsgi, используя yum.

Я настроил виртуальный хост, как показано ниже:

<VirtualHost *:80>
    ServerName myapp.myserver.com

    WSGIDaemonProcess myapp user=myuser group=mygroup threads=5 python-path=/var/www/myapp.myserver.com/html:/var/www/myapp.myserver.com/venv/lib:/var/www/myapp.myserver.com/venv/lib/python3.5/site-packages python-home=/var/www/myapp.myserver.com/html/venv
    WSGIScriptAlias / /var/www/myapp.myserver.com/html/myapp.wsgi
    <Directory /var/www/myapp.myserver.com/html>
            WSGIProcessGroup smex
            WSGIApplicationGroup %{GLOBAL}
            Order deny,allow
            Allow from all
    </Directory>
</VirtualHost>

Мой файл wsgi настроен, как показано ниже:

import sys
sys.path.insert(0, '/var/www/myapp.myserver.com/html')

activate_this = '/var/www/myapp.myserver.com/html/venv/bin/activate_this.py'
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this))

from myapp import app as application

Тем не менее, я получаю внутреннюю ошибку сервера при попытке открыть сайт. Журнал ошибок показывает следующее:

Tue Oct 18 14:24:50.174740 2016] [mpm_prefork:notice] [pid 27810] AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 mod_wsgi/3.4 Python/2.7.5 configured -- resuming normal operations
[Tue Oct 18 14:24:50.174784 2016] [core:notice] [pid 27810] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
ImportError: No module named site
ImportError: No module named site
ImportError: No module named site
ImportError: No module named site

Последняя ошибка повторяется для большей части файла журнала. Первое, что бросается в глаза - это версия Python, которая выглядит как 2.7.5. Это подводит меня к моим вопросам:

  1. Нужно ли устанавливать Python 3.5.1 в / usr / local или просто установить его в виртуальной среде?
  2. Нужно ли устанавливать конкретную версию mod_wsgi для этой версии Python? Если так, я должен установить это через pip вместо yum?
  3. Что еще мне не хватает, чтобы заставить это работать?

Заранее спасибо за помощь.

1 ответ

Посетите библиотеку коллекций программного обеспечения (SCL) по адресу https://www.softwarecollections.org/ для CentOS/RHEL, не используйте системные пакеты Python, Apache или mod_wsgi по умолчанию. SCL предоставляет более новые версии Python и Apache, чем системные версии по умолчанию. Затем соберите mod_wsgi из исходного кода для SCL-версий Python и Apache. Вы не можете заставить mod_wsgi использовать виртуальную среду Python для другой версии Python, отличной от той, для которой была скомпилирована mod_wsgi.

Другие вопросы по тегам