Djangoの扱いに少しは慣れてきたつもりでしたが、肝心のデプロイで大幅に躓いて一歩も動けなくなっていました。
そんなところで都合よく参加したDjangoMeetupで、がっつり一緒に悩んでもらった結果、下記の記述で解決しました。
環境:Apache2.2,Django1.7,Python3.3
mod_wsgiのインストールとかはここから http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
pip install インストールした.whl
してから、mod_wsgi.soをApache2.2\modulesにコピーして準備は完了。
あとはhttpd.confだけいじります。(wsgi.pyは僕のケースでは初期のまま)
LoadModule wsgi_module modules/mod_wsgi.so WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py WSGIPythonPath /path/to/mysite.com <Directory /path/to/mysite.com/mysite> <Files wsgi.py> SetHandler wsgi-script Order deny,allow Allow from all </Files> </Directory>
おおむね公式ドキュメント通りにhttpd.confを記述。公式の「Require all granted」 はApache2.4の記法なので、2.2の場合は下記に修正。
Order deny,allow Allow from all
その他の点は、wsgi.pyに記述を加えたり、パスの通し方を変えたりなどなど、一進一退の苦労があったのですが、つまるところ下記の一文を加えるだけですべて解決しました。
SetHandler wsgi-script
読み込んでいるwsgi.pyがwsgi-scriptだ!と教えてやればよかったようです。
DjangoMeetupは本当に良いイベントです(現在進行形)。本当にありがとうございました。
その他ハマったところ
PythonとApacheのどちらかだけが64bit版だったりすると、そもそもmod_wsgiが読み込めない(というか適合するバージョンがない)。
そもそも手元のWindows,Apache環境で頑張ったのが苦労の原因・・・なので素直にLinux,ngixでもやってみようと手をうごかしはじめているところです。