LoginSignup
15
25

More than 5 years have passed since last update.

FlaskアプリをApache + mod_wsgi on windowsで動かす

Last updated at Posted at 2018-04-27

この組み合わせがたぶん安牌、てゆか他に候補がない。

その他のサーバ候補

  • 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してくれる。

/your/app/path/yourapplication.wsgi
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サービスをリスタートすれば登録されているはずです。

参考

15
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
25