Windows,ApacheでDjangoをデプロイする

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は本当に良いイベントです(現在進行形)。本当にありがとうございました。

 

その他ハマったところ

PythonApacheのどちらかだけが64bit版だったりすると、そもそもmod_wsgiが読み込めない(というか適合するバージョンがない)。

 

そもそも手元のWindows,Apache環境で頑張ったのが苦労の原因・・・なので素直にLinux,ngixでもやってみようと手をうごかしはじめているところです。