apache 修改wsgi不使用virtualenv python版本在Arch Linux上

3duebb1j  于 2023-03-03  发布在  Apache
关注(0)|答案(1)|浏览(151)

我有一个网站运行在apache-python 2(virtualenv)-flask stack上的Arch Linux服务器上。似乎wsgi应用程序没有从virtualenv中获取python,而是使用系统的python。

网站/test.py

import sys
print(sys.version)

结果:error_log

3.4.3 (default, Mar 25 2015, 17:13:50)

服务器上的缺省python为

$ python --version
Python 3.4.3

我打算使用的虚拟环境具有python 2

$ virtualenv -p /usr/bin/python2.7 flask
$ source flask/bin/activate
$ python --version
Python 2.7.10

虚拟主机Apache文件:/etc/httpd/配置文件/虚拟主机/msw.com

<VirtualHost *:80>
    ServerName msw.com
    ServerAlias www.msw.com
    ServerAdmin webmaster@localhost
    WSGIDaemonProcess msw user=live group=live threads=5 python-path=/home/live/msw/flask/lib/python2.7/site-packages
    WSGIScriptAlias / /home/live/msw/msw.wsgi

    <Directory /home/live/msw>
            #Header set Access-Control-Allow-Origin "*"
            WSGIScriptReloading On
            WSGIProcessGroup msw
            WSGIApplicationGroup %{GLOBAL}
            WSGIPassAuthorization On
            Options All
            AllowOverride All
            Require all granted
    </Directory>
</VirtualHost>

wsgi文件:/主页/实时/msw/msw.wsgi

import sys

activate_this = '/home/live/msw/flask/bin/activate_this.py'
#execfile(activate_this, dict(__file__=activate_this))
with open(activate_this) as f:
    code = compile(f.read(), activate_this, 'exec')
    exec(code, dict(__file__=activate_this))

    sys.path.insert(0, '/home/live/msw/web')
    sys.path.insert(0, '/home/live/msw')

    from web import msw as application

为什么mod_wsgi没有拾取virtualenv的python?我做错了什么?

xghobddn

xghobddn1#

我终于弄明白了。官方的arch-linux文档mod_wsgi有点混乱。它试图暗示mod_wsgi安装将适用于Python 2/3。然而,mod_wsgi最终仍然使用系统的Python3。我通过安装特定于Python 2的mod_wsgi2解决了这个问题。

pacman -S mod_wsgi2

相关问题