【Apache】Apache&Djangoの構成のときのみアプリケーションが応答しなくなる

はじめに

こんにちは、SHOJIです。

Djangoで開発をしていたところ、Apacheと連携したときにだけアプリケーションが応答しなくなるトラブルが発生しました。本記事はその解決方法と原因です。

Apacheからmod_wsgi経由で実行すると応答しない

発生したのは Python manage.py runserver コマンドで起動すると正常にアクセスできるURLに、Apacheからmod_wsgi経由でアクセスすると応答が返ってこないという事象です。この手の障害は先駆者がいないと解決まで苦労することが多く、目にしたとき「うわ、嫌だな〜……」と思いました。

ですが、恐る恐るググってみると同じ事象に出会っている方がいました。けっこうメジャーなトラブルのようです。

serverfault.com

解決方法はシンプルで、Apache側の設定ファイルであるhttpd.confWSGIApplicationGroup %{GLOBAL}と設定すればいいとのこと。 指示通り設定するとたしかに動くようになりました。

WSGIApplicationGroupってなんですか?

こちらがmod_wsgiのWSGIApplicationGroupの説明です。 分かったような分からないような……。うーん、やっぱり分からない。

modwsgi.readthedocs.io

誰か分かりやすく説明していないかな?と探したら素晴らしい記事を見つけました。

tech-blog.monotaro.com

モノタロウさんのTech Blogなのですが、図解がめちゃくちゃ分かりやすいです。 読んでいて思いましたが、そもそも僕はmod_wsgiの動きを理解せずに使っていましたね。 前提を理解できていないのだから、WSGIApplicationGroupの説明を読んでもピンとこないのは当然でした。

おわりに

繰り返しになりますが、最後に紹介したモノタロウさんのTech Blog めちゃくちゃ分かりやすいですね。 会社自体は有名なのでもちろん知っていましたが、Tech Blogがここまで充実していることは知りませんでした。 他の記事も拝見しましたが、どれもクオリティがとても高いので時間を見つけて色々読ませていただこうと思います。