Я работаю над средой разработки 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. Это приводит меня к моим вопросам:
- Должен ли я иметь Python 3.5.1, установленный в/usr/local, или я могу просто использовать его в виртуальной среде.
- Должен ли я установить определенную версию mod_wsgi для этой версии Python? Если это так, я должен установить его через pip вместо yum?
- Что еще мне не хватает, чтобы заставить это работать?
Заранее за вашу помощь.
Да, вам нужна конкретная версия mod_wsgi. Возможно, вам придется скомпилировать его самостоятельно. –
@ DanielRoseman, нужен ли Python 3 для всей системы? Я бы так догадался, но это раздражающее требование. –
Нет, я не уверен, зачем это нужно. –