0

mod_wsgi を使用して Apache に 2 つの Django サイトをデプロイしています。2 つの virtualenv をインストールしました。

/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

システム(仮想環境ではなく)に南をインストールすると、すべてが機能しますが、もちろん、システムを汚染するのではなく、サイトごとに個別の仮想環境を使用するという考えです。

私は明らかなことを見逃していると思います..

4

2 に答える 2

0

vhostにサイトパッケージを追加するのではなく、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 に答える