modwsgiのためのスクリプトファイル

Djangoのプロジェクトをデプロイするとき、私のサーバでのディレクトリ構造は下記のようになっている*1

+ /
  + var
    + www
      + www.example.com
        + myproject
          - settings.py
          + wsgi
            - django.wsgi
        + .python-eggs

Apacheでのmodwsgiの設定は、

WSGIScriptAlias / /var/www/www.example.com/myproject/wsgi/django.wsgi

となっている。
最近、プロジェクトごとにdjango.wsgiを書くのが面倒になってきた。
ドメインが変わったりすることもしばしばあるので、少し汎用化してみた。

import os
import sys

PROJECT_BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_NAME = os.path.basename(PROJECT_BASE)
SITE_BASE = os.path.dirname(PROJECT_BASE)

sys.path.append(SITE_BASE)
sys.path.append(PROJECT_BASE)

os.environ['PYTHON_EGG_CACHE'] = os.path.join(SITE_BASE, '.python-eggs')
os.environ['DJANGO_SETTINGS_MODULE'] = PROJECT_NAME + '.settings'

from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()

これを毎回コピーして使うことにする。

*1:python-eggsは無い場合もある。