Apacheのモジュールであるmod_proxy_balancerを入り口として
RubyのHTTPサーバmongrel上でRoRアプリを動作させるようにしました.
Apacheのバージョンは2.2系を利用し,
http://sub.mydomain.com/ のような仮想サーバ上で運用します.
まずは,mongrel,mongrel_clusterのインストールから.
# gem install mongrel --include-dependencies
# gem install mongrel_cluster --include-dependencies
いくつのmongrelサーバを起動するか設定します.
# mongrel_rails cluster::configure -e production -p 4000 -N 3
サーバの起動
# mongrel_rails cluster::start
次に,Apacheの設定ファイルを編集します.
仮想サーバの設定と負荷分散の設定を行います.
/etc/httpd/conf/httpd.conf 辺りに以下を追加しました.
mydomain.com辺りは自分の環境に置き換えてください.
NameVirtualHost *:80<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName www.mydomain.com
</VirtualHost><VirtualHost *:80>
ProxyPreserveHost On
ServerName sub.mydomain.com
ProxyRequests Off<Proxy *>
Order deny,allow
Allow from all
</Proxy>ProxyPass / balancer://test/
ProxyPassReverse / balancer://test/
<Proxy balancer://test/>
BalancerMember http://127.0.0.1:4000 loadfactor=10
BalancerMember http://127.0.0.1:4001 loadfactor=10
BalancerMember http://127.0.0.1:4002 loadfactor=10
</Proxy>
</VirtualHost>
Apacheの設定ファイルを読み込みます.
# /etc/rc.d/init.d/httpd reload
これで,http://sub.mydomain.com/にアクセスすると
RoRアプリが起動します.
自分の場合,Routing Errorが出て悩みました.
Apache設定ファイルの
「BalancerMember http://127.0.0.1:4000」を
「BalancerMember http://127.0.0.1:4000/」と書いていたのが原因.
スラッシュ一つで動かなくなるので注意.