2016-10-18 2 views
0

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

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

Я настроил VirtualHost, как показано ниже:

<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. Что еще мне не хватает, чтобы заставить это работать?

Заранее за вашу помощь.

+0

Да, вам нужна конкретная версия mod_wsgi. Возможно, вам придется скомпилировать его самостоятельно. –

+0

@ DanielRoseman, нужен ли Python 3 для всей системы? Я бы так догадался, но это раздражающее требование. –

+0

Нет, я не уверен, зачем это нужно. –

ответ

0

Ознакомьтесь с библиотекой коллекций программного обеспечения (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.

 Смежные вопросы

  • Нет связанных вопросов^_^