読者です 読者をやめる 読者になる 読者になる

Ubuntu Server で wsgi を使うと SetEnv が効かない

Djangowsgi.py は、

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

となっているので、 Apacheの設定で

SetEnv DJANGO_SETTINGS_MODULE mysite.settings.prod

って感じに本番環境と開発環境でsettingsを切り替えるというのは、結構よくある手段だったと思う。

しかし、Ubuntu Server 14.04で wsgi-py3 を使うとうまく動かない(2系の方は試してない)。 http://stackoverflow.com/a/9017610 に書いてある通り、 環境ってのはリクエストごとにあるべきであって、起動時に環境変数を読むっていうのはなんか変ってことで、リクエストが来る前の環境変数は特に設定されなくなってしまったらしい。

仕方がないので wsgi.py をシンボリックリンクにして、サーバ側で用意することにした。 AnsibleとかChefのテンプレートでサーバごとに生成すると、開発環境・テスト環境を分けやすい。