如何让Django和apache与virtualenv一起工作?

时间:2016-12-22 23:17:13

标签: python django apache

好的抱歉,我知道这个问题与另一个问题相似,但是当我尝试其他答案时似乎对我没有用。 Apache2.2:ImportError: No module named site。所以我想让django / virtualenv / apache一起工作。非常感谢任何帮助!!

以下是错误日志。

Part one of apache error logs Part two of apache error logs

这是我的apache conf文件

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName tracker.com

<Directory /var/www/html/drish/drish>
    <Files wsgi.py>
        Require all granted
    </Files>
order allow,deny
allow from all
</Directory>


WSGIDaemonProcess project python-path=/var/www/html/drish/:python-home=/var/www/html/virtenv
WSGIScriptAlias / /var/www/html/drish/drish/wsgi.py
Alias /static /var/www/html/drish/drish
</VirtualHost>

我没有更改wsgi.conf文件中的任何内容,我所做的就是启用它。虽然我确实在那里看到了一些选项,但不确定他们做了什么。

这是由django创建的WSGI.py文件,我也没有改变任何内容。

import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "drish.settings")
application = get_wsgi_application()

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

从您的错误日志中,似乎存在一些潜在的问题,包括它无法导入drish.settings,以及它在您的虚拟环境中没有使用Python二进制文件这一事实。我认为你需要首先解决后一个问题,然后才弄清楚为什么drish.settings不会导入,所以让我们验证一些事情。

首先,您确定WSGIDaemonMode指令中的语法吗?对于python-path值,文档看起来与上面的文档略有不同。这是their example from the docs

WSGIDaemonProcess example.com python-path=/path/to/mysite.com:/path/to/venv/lib/python2.7/site-packages
WSGIProcessGroup example.com

以下是我认为你应该看起来的样子:

WSGIDaemonProcess project python-path=/var/www/html/drish/:/var/www/html/virtenv/lib/python2.7/site-packages
WSGIProcessGroup project

显然,您需要验证/var/www/html/virtenv/lib/python2.7/site-packages目录确实存在,我正在对该特定位置做出有根据的猜测。

这完全有可能解决这两个问题,但我并不是100%肯定。无论哪种方式,尝试一下,让我们知道你是如何进行的。理想情况下,您至少会开始看到它在您的虚拟环境中使用python二进制文件,而不是系统文件。