0

我正在使用 mod_wsgi 在 apache 上部署两个 django 站点。我已经安装了两个 virtualenvs:

/home/user/virtualenv1
/home/user/virtualenv2

现在我的问题是配置 wsgi 应用程序以使用这些,例如我有:

/var/www/djangosite1
/var/www/djangosite1/project1/wsgi.py

/var/www/djangosite2
/var/www/djangosite2/project2/wsgi.py

我的 apache 是通过 openPanel 配置的,所以我的 VirtualHosts 包括如下:

/etc/apache2/openpanel.d/project1.com.inc/django.conf

<VirtualHost *:80>
ServerName project1

WSGIDaemonProcess project1 user=user group=www-data processes=2 threads=25 python-path=/home/user/virtualenv1/lib/python2.6/site-packages
WSGIProcessGroup project1
</VirtualHost>

/etc/apache2/openpanel.d/project2.com.inc/django.conf

<VirtualHost *:80>
ServerName project2

WSGIDaemonProcess project2 user=user group=www-data processes=2 threads=25 python-path=/home/user/virtualenv2/lib/python2.6/site-packages
WSGIProcessGroup project2
</VirtualHost>

现在我重新启动apache:

service apache2 reload

这没有给我任何错误,接下来我跟踪错误日志并访问我的 project.com

tail -f /var/log/apache2/error.log

这给了我这个错误

ImportError: No module named south

当我在我的系统上(不是在 virtualenv 中)安装 south 时,一切正常,但当然想法不是污染系统,而是为每个站点使用单独的虚拟 env。

我想我错过了明显的..

4

2 回答 2

0

尝试在 wsgi 文件中启用您的 virtualenv,而不是在虚拟主机中添加站点包。

将以下内容添加到 wsgi 文件的顶部。

# Start the correct virtualenv
activate_this = '/home/user/virtualenv1/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

(我不确定这是否是官方的做事方式,但它肯定是我工作过很多次的事情。)

于 2012-07-03T14:41:11.010 回答
0

也许您需要在 virtualenv 上检查您当前的南路径并之前添加到您的 sys.path 中。

于 2012-07-03T09:10:58.237 回答