仅在虚拟环境中安装Python版本的Apache上部署Python Flask应用程序
我正在CentOS7开发环境中工作。这台机器预装了Python 2.7.5。我使用Python3.5.1开发了一个web应用程序,该应用程序及其依赖项仅安装在虚拟环境中。Python 3未在计算机范围内安装。我现在正试图在Apache服务器上部署应用程序,但遇到了麻烦。这就是我所做的 我使用yum安装了mod_wsgi 我配置了virtualhost,如下所示:仅在虚拟环境中安装Python版本的Apache上部署Python Flask应用程序,python,apache,flask,mod-wsgi,python-3.5,Python,Apache,Flask,Mod Wsgi,Python 3.5,我正在CentOS7开发环境中工作。这台机器预装了Python 2.7.5。我使用Python3.5.1开发了一个web应用程序,该应用程序及其依赖项仅安装在虚拟环境中。Python 3未在计算机范围内安装。我现在正试图在Apache服务器上部署应用程序,但遇到了麻烦。这就是我所做的 我使用yum安装了mod_wsgi 我配置了virtualhost,如下所示: <VirtualHost *:80> ServerName myapp.myserver.com WSG
<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>
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。这就引出了我的问题:
提前感谢您的帮助。请查看CentOS/RHEL上的软件集合库(SCL),不要使用任何默认的系统Python、Apache或mod_wsgi软件包。SCL提供了比默认系统版本更新的Python和Apache版本。然后根据Python和Apache的SCL版本从源代码构建mod_wsgi。您不能强制mod_wsgi为不同于mod_wsgi编译所用版本的Python使用Python虚拟环境。请查看CentOS/RHEL上的软件集合库(SCL),不要使用任何默认的系统Python、Apache或mod_wsgi包。SCL提供了比默认系统版本更新的Python和Apache版本。然后根据Python和Apache的SCL版本从源代码构建mod_wsgi。您不能强制mod_wsgi为不同版本的Python使用Python虚拟环境,而不是编译mod_wsgi所用的版本。是的,您需要mod_wsgi的特定版本。您可能需要自己编译它。@DanielRoseman,Python 3是否需要在系统范围内安装?我想是的,但这是一个烦人的要求。不,我不知道为什么需要这样做。您可能想尝试通过pip将
mod_wsgi
安装到您的虚拟环境中。有关详细信息,请参阅mod_wsgi文档:是的,您需要mod_wsgi的特定版本。您可能需要自己编译它。@DanielRoseman,Python 3是否需要在系统范围内安装?我想是的,但这是一个烦人的要求。不,我不知道为什么需要这样做。您可能想尝试通过pip将mod_wsgi
安装到您的虚拟环境中。有关详细信息,请参阅mod_wsgi文档: