EC2onRails
は、EC2上でRailsアプリケーションを走らせる環境として提供されている
AMIイメージと管理用スクリプト群です。
これを使うと、非常に簡単にRailsアプリケーションをEC2上で動かす
環境を用意することが出来ます。
基本的にCapistranoのタスクとして実装されていて、
sh>>
% cap deploy
<<--
するだけで、開発環境からEC2上にデプロイが完了します。
EC2onRailsは非常に便利でありがたいのですが、
基本的に1アプリケーション1インスタンスの構成でデプロイされるように
なっているので、ちょっとしたサンプルアプリケーションや、
内々に評価中のアルファ版のサービスなどを気軽にデプロイするのには、
コスト面が気になるところです。
ということで、1インスタンスで複数アプリケーションをデプロイするために
施した修正のメモを以下に書いておきます。
- EC2onRailsの各種設定ファイルのデプロイ先を
/mnt/app/から
/mnt/app/<app_name>に変更
/etc/init.d/mongrel の中身を修正し、第二引数でアプリケーション名を
受け取るようにする。
- 受け取ったアプリケーション名を元に、
/mnt/app/<app_name>/currentにcdして、config/mongrel_cluster.ymlを参照してmongrel_rails cluster::restart するようにする。
/etc/apache2/conf.d/の中身をapp.proxy_frontend.confとcharset以外削除。
/etc/apache2/sites-enabled/の中身を削除し、アプリケーションごとのVirtualHostの設定を記述したファイルを<app_name>という名前で作成する。
pre>>
ServerSignature Off
<VirtualHost *:80>
ServerName blog.s21g.com
(---略---)
DocumentRoot /mnt/app/blog/current/public
<Directory "/mnt/app/blog/current/public">
(---略---)
<Proxy balancer://mongrel_cluster>
BalancerMember http://127.0.0.1:8000
BalancerMember http://127.0.0.1:8001
(---以下略---)
<<--
- アプリケーションごとに80n* のようなポート番号を割り当てるとか。
大体こんな感じで複数アプリ対応化できた気がします。
何か漏れがあるのを思い出したら追記します。
See Also