この組み合わせがたぶん安牌、てゆか他に候補がない。
その他のサーバ候補
- uwsgi with cygwin
linuxではuwsgi使ってるので魅力的だったが、
cygwinでトラブりたくなかった。
- iis + wfastcgi
wfastcgiはMicrosoft製のライブラリ。
WSGIをFastCGIしてくれる。
python3.4までしかサポートしていないっぽいのと、エラーメッセージ系が全然だったので中止。
環境のインストール
mod_wsgi
mod_wsgiを起点にインストールするライブラリを決める。
公式ではwindows向けライブラリの最新版は止まっているので、こちらを使わせていただきました。
Unofficial Windows Binaries for Python Extension Packages
今回はpython3.6 + amd64は決まっていたので、
mod_wsgi‑4.5.24+ap24vc14‑cp36‑cp36m‑win_amd64.whl
mod_wsgi‑4.6.4+ap24vc14‑cp36‑cp36m‑win_amd64.whl
の2択、新しい方のmod_wsgi‑4.6.4+ap24vc14‑cp36‑cp36m‑win_amd64.whlを使いました。
python
https://www.python.org/downloads/windows/
こちらからダウンロードしてインストール、ちゃんと環境変数を通す。
普通にダウンロードすると32bitが落ちてきてしまうので、ちゃんと64bitを明示的に落としてインストールします。
Apache
公式では配布が止まっているので、サードパーティからダウンロード。
https://httpd.apache.org/docs/current/platform/windows.html#down
今回はApacheHaus版を落としました。
mod_wsgiに合わせて、ap24vc14をダウンロードします。
vc14はVisualC++のバージョンでVisualC++2015でコンパイルされたことを示す。
Apacheはc:¥Apach24フォルダに解凍。
そうしないと、mod_wsgiでインストールパスの設定が必要になります。
サービス登録
cd c:¥Apache24¥bin
httpd -k install
mod_wsgiのインストール
pip install mod_wsgi‑4.6.4+ap24vc14‑cp36‑cp36m‑win_amd64.whl
環境があってれば、正しくインストールされます。
apacheへmod_wsgiの登録
コマンドプロンプトで"mod_wsgi-express module-config"を実行
mod_wsgi-express module-config
LoadFile "c:/python36/python36.dll"
LoadModule wsgi_module "c:/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/python36"
wsgi_moduleのコマンドが出るので、この3行をhttpd.confへ貼り付けて起きます。
wsgi起動スクリプトの作成
flaskアプリをapplicationという名前でimportします。
mod_wsgiがapplicationを拾ってrunしてくれる。
import sys
sys.path.insert(0, 'c:/your/app/path')
from yourappname import app as application
VirtualHostへ登録
<VirtualHost localhost>
DocumentRoot "C:/your/app/path/"
WSGIScriptAlias / "C:/your/app/path/yourapplication.wsgi"
<Directory "C:/your/app/path/">
Require all granted
</Directory>
</VirtualHost>
完了
あとはhttpdサービスをリスタートすれば登録されているはずです。
参考
-
Python Windows で mod_wsgi を Apache に組み込む方法
https://qiita.com/h_digitalhearts/items/279ec1dfd28cb9693a1f