macportsでvirtualenvとapacheとmod_wsgi
virtualenvで仮想環境を作ることが出来たので、これをmod_wsgi経由でapacheから利用できるようにしたいと思います。
過去にmacportsでwsgi_modを入れていたのでこれを使おうと思ったのですが、
確認したところインストールされているのはmod_wsgi@3.3_0+python26となっていてpython2.6を使用する設定になっている模様。
仮想環境はpython2.5にしたので1度deactivateにして再度インストールすることに。
sudo port install mod_wsgi -python25
しかしpython2.5を指定しても結局インストールされるのはmod_wsgi@3.3_0+python26。
うーん、ヴァージョンを下げなければpython2.5では入らないんですかね・・・。
悩んだあげく、よくわからず仮想環境をpython2.6に変更しました。
さて気を取り直してmod_wsgiを有効にするためapacheのhttpd.confを書き換えます。
macportで入れたapache2ならopt/local/apache2/conf/の中にあります。
54行目あたりのLoadModuleが羅列してある最後に
LoadModule wsgi_module modules/mod_wsgi.so
があることを確認します。なければ追加します。
続いてWSGIPythonHomeを設定します。
virtualenvwrapperで作成した仮想環境のパスを指定すればいいようです。
WSGIPythonHome ~/Test/Test1/
仮想環境はヴァーチャルホストで運用するのがいいかと思います。
virtualhostを設定して、Directoryディレクティブに以下の設定を書けば動かせるはずです。
<Directory "~/Test/Test1"> Options Indexes FollowSymLinks ExecCGI SetHandler wsgi-script AddHandler wsgi-script .wsgi AddHandler wsgi-script .py </Directory>
これくらい書いとけば取りあえず動くと思います。
Djangoでテストしてみる
せっかくなのこの環境でDjangoを動かしてみたいと思います。まずはworkon Test1としてpipでdjnagoをインストール。
設定については以下のドキュメントで詳しく説明してくれています。
Apache と mod_wsgi 環境で Django を使う方法
自分の仮想環境の設定では以下のような感じ。
httpd.conf
WSGIScriptAlias / ~/Test/Test1/django/django.wsgi
djnago.wsgi
sys.path.append('~/Test/Test1')