Apache/Wsgi在Cen上从本地环境切换到virtualenv时出现问题

2024-04-19 00:08:30 发布

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

我正在尝试将一个现有的、正在工作的django应用程序从使用本地env(即/usr/lib/python2.7/site包)改为使用virtualenv(即[PATH\u to\u virtualenv]/lib/python2.7/site包)。这是为了帮助我的包更新最终,所以我可以回滚到以前的环境,如果必要的话。你知道吗

我首先在一个新的virtualenv上安装本地env中安装的所有软件包,使用完全相同的版本。此时,我可以使用新的env在app dir(/home/django/qa/web)中运行django shell表单,这将确认满足所有依赖项。你知道吗

以下是初始工作配置。你知道吗

你知道吗wsgi.py公司地址:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "web.settings")

application = get_wsgi_application()

虚拟主机:

<VirtualHost *:80>
    ServerName qa.myserv.com
    DocumentRoot /var/www/qa.myserv.com/public_html
    ErrorLog /var/www/qa.myserv.com/logs/error.log
    CustomLog /var/www/qa.myserv.com/logs/requests.log combined

    <Directory /home/django/qa/web/web>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess qa python-path=/home/django/qa/web:/lib/python2.7/site-packages
    WSGIProcessGroup qa
    WSGIScriptAlias / /home/django/qa/web/web/wsgi.py

</VirtualHost>

现在,我试着通过更改WSGIDaemonProcess行来让虚拟env(位于/home/django/env/qa_0)工作:

尝试1

WSGIDaemonProcess qa python-path=/home/django/qa/web:/home/django/env/qa_0/lib/python2.7/site-packages

这导致了内部服务器错误,错误日志中包含以下内容:

[Wed Apr 25 13:57:25.089794 2018] [:error] [pid 23812] [remote 192.168.1.248:240]     from django.core.wsgi import get_wsgi_application
[Wed Apr 25 13:57:25.089845 2018] [:error] [pid 23812] [remote 192.168.1.248:240] ImportError: No module named wsgi

尝试2

WSGIDaemonProcess qa python-home=/home/django/env/qa_0 python-path=/home/django/qa/web

这也导致了一个内部服务器错误,花费了更长的时间,并在错误日志中以以下内容结束:

[Wed Apr 25 13:30:58.779124 2018] [core:error] [pid 17503] [client 192.168.1.248:53731] Script timed out before returning headers: wsgi.py

我尽可能地复习了django和modwsgi文档,并且查看了所有关于堆栈溢出的相关问题,我似乎都搞不懂这一点。有什么想法吗?你知道吗


Tags: djangopyenvcomwebwsgihomeapplication