Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在虚拟环境中安装Python版本的Apache上部署Python Flask应用程序_Python_Apache_Flask_Mod Wsgi_Python 3.5 - Fatal编程技术网

仅在虚拟环境中安装Python版本的Apache上部署Python Flask应用程序

仅在虚拟环境中安装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

我正在CentOS7开发环境中工作。这台机器预装了Python 2.7.5。我使用Python3.5.1开发了一个web应用程序,该应用程序及其依赖项仅安装在虚拟环境中。Python 3未在计算机范围内安装。我现在正试图在Apache服务器上部署应用程序,但遇到了麻烦。这就是我所做的

我使用yum安装了mod_wsgi

我配置了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>
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。这就引出了我的问题:

  • 我是否需要在/usr/local中安装Python 3.5.1,还是可以在虚拟环境中安装它
  • 我是否需要为此版本的Python安装特定的mod_wsgi版本?如果是这样的话,我应该通过pip而不是yum来安装它吗
  • 我还缺少什么来让它工作

  • 提前感谢您的帮助。

    请查看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文档: