mod_wsgiのダウンロード
まず、Unofficial Windows Binaries for Python Extension Packagesから、Pythonのアーカイブ形式の一つであるホイールファイル(.whl)をダウンロードする
数種類のファイルが存在するが、ダウンロードしてくるのは
mod_wsgi-[mod_wsgiのバージョン]+ap[apacheのバージョン]vc[Visual Studio compiler のバージョン]-cp[Pythonのバージョン]-cp[Pythonのバージョン]m-win[OSのビット数].whl
と一致するファイル
例えば、以下の様な環境でインストールしようとする場合、
- Windows 64bit
- Apache 2.4.x
- Python 3.5.x
mod_wsgi-4.4.23+ap24vc14-cp35-cp35m-win_amd64.whl
をダウンロードしてくる
mod_wsgiのインストール
mod_wsgiをpipを使ってインストールする
pip install mod_wsgi-4.4.23+ap24vc14-cp35-cp35m-win_amd64.wh
成功すると、Pythonがインストールされているフォルダ配下に、mod_wsgi.soができる
C:/Program Files/Python35/mod_wsgi.so
mod_wsgiをApacheに組み込む
できたmod_wsgi.soをApacheがインストールされているフォルダのmodules配下に置く
C:/Programs/Apache24/modules/mod_wsgi.so
httpd.confに追記する
// 181行目あたり
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>
Order deny,allow
Allow from all
</Files>
</Directory>
virtualenv の中にプロジェクトが依存する Python モジュールをインストールしているなら、 virtualenv の site-packages ディレクトリも Python パスに追加する必要がある
そのためには、 Apache の設定にもう一行追加
// X.XはPythonのバージョン
WSGIPythonPath /path/to/your/venv/lib/pythonX.X/site-packages
Apacheを再起動する
プロジェクトを作成する
wsgi_modを使うには、プロジェクト内にwsgi.pyが必要
以下のコマンドを実行することで、wsgi.pyが含まれるプロジェクトを生成できる
django-admin startproject [プロジェクト名]
ちなみに、wsgi.pyの中身は以下
"""
WSGI config for helloworld project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "[プロジェクト名].settings")
application = get_wsgi_application()
おまけ
これでApache + mod_wsgiの環境をWindowsに構築できたが、この構成ではコードの変更が即時反映されない
これを解決する方法として、MaxRequestsPerChildをあえて小さい数にして、Apacheが再起動しやすい環境を作るという手がある
詳しくは、modwsgi - ReloadingSourceCode.wikiを参照されたし
MaxRequestsPerChild 3