(gs) Ruby on Rails Container の使用感

prairied.org ではじめて Media Temple Grid-ServerRuby on Rails Container を使ってみたわけですが、どんな感じか書いておこうと思います。

Ruby on Rails Container というのは Rails アプリケーションのために特別に設けられた環境で、ユーザのその他の環境とは切り離されて管理されます。メモリも専用の割り当てが与えられ、デフォルトでのバンドルが 64MB、さらに月額の追加料金を払えば 256MB($25)、1GB($75) に増強できます。

1アカウントに対して 1コンテナまでしか使えませんが、1コンテナのなかで複数の Rails を動作させられます。ただ Rails アプリケーション1個あたりで最低でも 20MB 程度食うようなので、64MB のコンテナだと2個程度が限度だろうと思います。

割り当て上限を超えてメモリを消費しようとした場合は、コンテナで動いているアプリケーションのひとつをランダムで選んで終了させるそうなので、あらかじめ余裕を持たせておいたほうが良さそうです。メモリ消費が上限近くになるとアラートが上がるように設定できます。

HTTP サーバは Mongrel が使われます。アプリケーションごとに Mongrel のプロセスと、個別のプライベート IP アドレスとポート番号が割り当てられ、外側でアクセスを受ける Apache からその Mongrel のポートにリダイレクトされる形になります。

コンソールから gem install コマンドで自由に RubyGems をインストールできるようになっていて、影響範囲はコンテナ内に限られるので好きな Gems を入れて使うことができます。Rails や MySQL、Postgres、Mongrel などの主要な Gems については動作確認済みのバージョンが Media Temple のリポジトリから配布されていて、そちらを使うことが推奨されています。

SSH のコマンドインタフェイスから railsrake などのコマンドを実行できるほか、アプリケーションのストップ/スタートなどは mtr (Media Temple Container control program) というスクリプトで管理が簡単にできるようになっています。

新たに Rails アプリケーションを動かすまでの基本的な流れとしては、

  1. $HOME/../../containers/rails ディレクトリに Rails アプリケーションをコピー
  2. mtr コマンドでコンテナにアプリケーションを追加
    専用のプライベート IP アドレスとポート番号が割り当てられる。
  3. アプリケーションの public/.htaccess を書き換え
    先に割り当てられたポートに全接続がリダイレクト (リライト) されるようにする。書き換えは mtr コマンドが自動的に行なう。
  4. $HOME/domains/(domain)/html からアプリケーションの public ディレクトリへのシンボリックリンクを張る
    これも mtr コマンドで行なわれる。
  5. mtr コマンドでアプリケーションをスタート

こんな感じです。

アプリケーションの log ディレクトリに mongrel のプロセス ID ファイル (mongrel.pid) が作られるので、アプリケーションを新バージョンに移行する場合はこれも忘れずにコピーすることが必要です。バージョンの移行に関わる一連の作業を僕はスクリプト書いて実行してますが、svn が使えるので containers/rails に作業コピーを展開するというのも楽かも知れません。

とりあえずそんな感じで prairied.org は動いているわけですが、なにかほかに知りたいことあります?

One Comment

  1. Posted 11 月 9, 2006 at 5:30 pm | Permalink

    なるほど。よさげですね、これは。
    railsへ乗り換えるために勉強しているので参考になります。

    ところで最近、三重県津市のWebzine「2driving.com」をWPで始めました。
    http://2driving.com

    prairied.orgも2drivingで使ってみたいな、と考えています。これからもよろしくお願いします。

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*