使用两个不同python版本(Django App)的apache2中出现WSGI错误

2024-10-03 13:23:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在ubuntu的Apache2服务器上使用不同的python版本(2.7和3.5)设置两个Django应用程序。在

apache配置:

WSGIDaemonProcess site1  display-name=%{GROUP} 
WSGIScriptAlias /site1 /var/www/bigb/site1/site1/wsgi.py
    <Location /site1>
        WSGIProcessGroup site1
        WSGIApplicationGroup %{GLOBAL}
    </Location>
WSGIDaemonProcess vdms display-name=%{GROUP}
WSGIScriptAlias /vdms /var/www/bigb/vdms/vdms/wsgi.py 
    <Location /vdms>
        WSGIProcessGroup vdms
        WSGIApplicationGroup %{GLOBAL}
    </Location>
    <Location /site1>
        WSGIProcessGroup site1
        WSGIApplicationGroup %{GLOBAL}
    </Location>
   <Directory /var/www/bigb/vdms/vdms>
    <Files wsgi.py>
        Require all granted
    </Files>
  </Directory>
  <Directory /var/www/bigb/site1/site1>
    <Files wsgi.py>
        Require all granted
    </Files>
  </Directory>

在Wsgi.py站点1的文件:

^{pr2}$

在Wsgi.pyvdms文件:

from django.core.wsgi import get_wsgi_application
sys.path.append('/var/www/bigb/vdms')
sys.path.append('/var/www/bigb/vdms/venv/lib/python2.7/site-packages')
os.environ["DJANGO_SETTINGS_MODULE"]= "vdms.settings"
application = get_wsgi_application()

当我试图运行apache服务器时,我可以访问site1,但是当我试图加载vdms时,我得到了内部服务器错误

 raise RuntimeError("populate() isn't reentrant")
[Tue Aug 07 11:25:03.426115 2018] [wsgi:error] [pid 12920] [remote 192.168.1.14:57874] RuntimeError: populate() isn't reentrant
[Tue Aug 07 11:25:03.426095 2018] [wsgi:error] [pid 12920] [remote 192.168.1.14:57874]     apps.populate(settings.INSTALLED_APPS)
[Tue Aug 07 11:25:03.426100 2018] [wsgi:error] [pid 12920] [remote 192.168.1.14:57874]   File "/usr/local/lib/python3.5/dist-packages/django/apps/registry.py", line 81, in populate

我已经在我的系统上安装了libapache2-mod-wsgi-py3和libapache2 mod wsgi,我还在venv中安装了mod_wsgi。我可以在配置中添加任何配置错误。请教育我解决这个问题


Tags: pywsgiapplicationvarwwwlocationfilesglobal