バリケンのRuby日記 RSSフィード

2007-03-31

[][] Delegateを利用してひとつのポートで複数のRailsアプリを同居する  Delegateを利用してひとつのポートで複数のRailsアプリを同居する - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  Delegateを利用してひとつのポートで複数のRailsアプリを同居する - バリケンのRuby日記  Delegateを利用してひとつのポートで複数のRailsアプリを同居する - バリケンのRuby日記 のブックマークコメント

昨日の日記で、Ruby on Railsで作ったWebアプリWindowsサービスとして起動する方法はわかったけど、この方法だとアプリごとにポート番号を指定してアクセスする必要があるのがちょっと気になるよね。

じゃあ今日Delegateというソフトウェアを利用して、ひとつのポートで複数のRailsアプリを同居してみるよ。

Delegateインストール

ここからDelegateWindows版の最新のバージョンダウンロードするよ。ここでは、dg9_5_4.zipダウンロードしたよ。

ダウンロードしたdg9_5_4.zipを展開して、その中のファイルをC:\Program Files\delegateにすべてコピーするよ。

Delegateの設定

まずは、C:\Program Files\delegateフォルダdelegate.batというファイルテキストエディタで作成するよ。内容は次の1行だけ。

dg9_5_4.exe +=delegate.cfg

dg9_5_4.exeはバージョンによってファイル名が異なるから、違うバージョンDelegateインストールしたときは、実行ファイルファイル名にあわせてね。

次に、C:\Program Files\delegateフォルダdelegate.cfgというファイルテキストエディタで作成するよ。たとえば、

mongrel_rails service::install -N "Rails BBS" -c c:\rails\bbs -p 4000 -e production
mongrel_rails service::install -N "Rails ToDo" -c c:\rails\todo -p 4001 -e production
mongrel_rails service::install -N "Rails TinyURL" -c c:\rails\tinyurl -p 4002 -e production

のように3つのRailsアプリを起動していたら、

-P80
SERVER=http
MOUNT="/* http://localhost:4000/*"
REACHABLE=localhost
MOUNT="/todo/* http://localhost:4001/todo/*"
REACHABLE=localhost
MOUNT="/tinyurl/* http://localhost:4002/tinyurl/*"
REACHABLE=localhost
RELIABLE="*" # 全てのホストからのアクセスを許可
ADMIN=webmaster@yourhost.yourdomain

のように設定すれば、http://localhost/bbsアクセスすればBBSアプリに、http://localhost/todoアクセスすればToDoアプリに、http://localhost/tinyurlアクセスすればTinyURLアプリにそれぞれ振り分けてくれるよ。

Delegateの起動

コマンドプロンプトでC:\Program Files\delegateに移動して、delegate.batを起動するよ。

cd C:\Program Files\delegate
delegate.bat

Windows XP SP2を使っている人は、とちゅうでファィアウォールの警告が出ると思うけど、これは「このサービスに外部のマシンからもアクセスを許可するかどうか」を聞いているよ。これを許可すると、外部のマシンからでもRailsアプリを利用できるようになるよ。

あと、とちゅうで

Set Automatic Start on System Startup ? [y] / n :

と聞かれるから、そのままリターンキーを押してね。DelegateWindowsサービスとして登録されるよ。

せっかくのWebアプリだから、小規模オフィスのスケジューラとか、みんなで共有できるようなWebアプリをつくってみたくなるねえ。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20070331