我正在开发CentOS7开发环境。该机预装了Python 2.7.5。我使用Python 3.5.1开发了一个Web应用程序,它与它的依赖关系仅安装在虚拟环境中。 Python 3未在机器范围内安装。我现在正在尝试在Apache服务器上部署应用程序,但遇到了麻烦。这就是我所做的。
我使用yum安装了mod_wsgi。
我配置了虚拟主机,如下所示:
<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。这让我想到了我的问题:
提前感谢您的帮助。
答案 0 :(得分:0)
在https://www.softwarecollections.org查看CentOS / RHEL的软件集合库(SCL),不要使用任何默认系统Python,Apache或mod_wsgi软件包。 SCL提供了比默认系统版本更新的Python和Apache版本。然后针对Python和Apache的SCL版本从源代码构建mod_wsgi。您不能强制mod_wsgi将Python虚拟环境用于与编译mod_wsgi不同版本的Python。