我正在使用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中)时,所有工作都有效,但是当然,这个想法不是污染系统,而是为每个站点使用单独的虚拟环境。
我想我错过了那个明显的......
答案 0 :(得分:0)
也许您需要检查virtualenv上当前的南路径并先前添加到您的sys.path。
答案 1 :(得分:0)
尝试在wsgi文件中启用virtualenv,而不是在vhost中添加site-packages。
将以下内容添加到wsgi文件的顶部。
# Start the correct virtualenv
activate_this = '/home/user/virtualenv1/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
(我不确定这是否是正式的做事方式,但这肯定是我多次工作过的事情。)