CORESERVER に Django アプリを複数設置する

 CORESERVERサブドメイン無制限らしいんだけど、Django アプリを設置するたびにサブドメインを増やしたくない。ということでいろいろ調べてたら、CATCH ALL機能と mod_rewrite を使えば動的サブドメインみたいなことができるらしい。実験用に設置するだけなら、これで十分じゃないかな。
※ これは CORESERVER の CORE-A プランで独自ドメインを使った場合。CORESERVER が提供しているサブドメインを使って、同じことができるかどうかは不明。


ちなみに設置してみたのはこの2つ。

Python の設定

前回はこの方法で設定してみたけど、virtual-python というのが面白そうなので、これを利用してみる。

手順はこのまま。virtual-python を入れて、easy_install を入れる。あとあと便利だろうから、pysqlite も入れておく。

# virtual-python
wget http://peak.telecommunity.com/dist/virtual-python.py
python virtual-python

# .bashrc
touch ~/.bashrc
echo 'export PYTHONPATH=~/lib/python2.4/site-packages' > ~/.bashrc
echo 'export PATH=~/bin:$PATH' > ~/.bashrc

#easy_install
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py

# Django
cd ~/lib/python2.4/site-packages
svn co http://code.djangoproject.com/svn/django/trunk/django django
cp ~/lib/python2.4/site-packages/django/bin/*.py ~/bin/.

# pysqlite
easy_install pysqlite

~/lib/python2.4/site-packages 以下に djblogkit と Django-authapi を展開しておく。

サーバの設定

※ CATCH ALL機能対応のサブドメイン「default」を指定されますと、設定されていないサブドメインを一括受け入れできます。同じサブドメイン内で一番最後に設定してください。(例:default.example.com は abc.example.comやxyz.example.comを兼ねます)

ということなので、CORESERVERの「管理メニュー」-->「ドメインウェブ」でこんな感じに設定する。

※ 設定は1個毎にやらないとだめっぽい。

ディレクトリ構成

 構成はこんなかんじ。ディレクトリ default.example.com 以下の xxx.example.com は、サブドメインと一致させること。あと静的ファイルへのリンクを貼っておく。

  • ~/public_html/
    • default.example.com/
      • djblogkit.example.com/
        • media --> /virtual/XXX/lib/python2.4/site-packages/django/contrib/admin/media/
        • djblogkit/static --> /virtual/XXX/lib/python2.4/site-packages/djblogkit/blog/templates/static/
        • django.cgi
      • djangoauthapi.example.com/
        • media --> /virtual/XXX/lib/python2.4/site-packages/django/contrib/admin/media/
        • site_media --> /virtual/XXX/lib/python2.4/site-packages/djangoauthapi/site_media/
        • django.cgi
      • .htaccess

※ XXX はユーザ名

.htaccess

/public_html/default.example.com/ に置く .htaccess はこんな感じ。
CATCH ALL機能対応を利用してサブドメインを利用する場合について を参考にした。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^.+(\.js|\.png|\.jpe?g|\.gif|\.css|\.html?)$
RewriteRule ^(([^\.]+/?)*|([^\.]/)*[^\.]*\.[^\.]+)$ /%{HTTP_HOST}/$1 [L,QSA]
RewriteRule ^(([^\.]+/?)*|([^\.]/)*[^\.]*\.[^\.]+)$ /%{HTTP_HOST}/django.cgi/$1 [L,QSA]

RewriteRule は2つ。静的ファイルなら HTTP_HOST 以下にリライト。それ以外なら HTTP_HOST 以下の django.cgi にリライトする。流れとしてはこんな感じらしい。

  1. ユーザが http://xxx.example.com/yyy/ にアクセス
  2. /xxx.example.com/django.cgi/yyy にリライト
  3. /public_html/default.example.com/ 以下の xxx.example.com/django.cgi/yyy にアクセス

django.cgi

 上記の参考ページとの違いは、virtual-python を使うようにしたくらいなので、ここは割愛。

#!/virtual/XXX/bin/python

CORESERVER 雑感

 さくらのときは独自ドメインを取得していなかったので、単純に比較できないが、自由度は CORESERVER の方が高そう。XREAとほとんど同じなので、情報も多いみたい。ただ、管理ページはものすごくわかりずらい。CORESERVER のページと VALUE-DOMAIN のページを行ったりきたりしてる上に、permalink じゃないからブックマークもできない。あとパスワードを自分で決められないのは勘弁してほしい・・・

 初心者には厳しい。まあ勉強になるから、もう少し使って見るつもりだけど。