おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

apache+mod_proxy_balancer+mongrelでRailsを動かす方法

 kaeruspoonは今までLighttpd+FastCGIで動かしていましたが、OSをcentOSからDebianに移したのを契機に、apache+mod_proxy_balancer+mongrelで動かすことにしました。
 まずはapacheとmongrel、mongrel_clusterのインストールから。

sudo aptitude install apache2  
sudo gem install mongrel --include-dependencies  
sudo gem install mongrel_cluster --include-dependencies  

 それからmod_proxyとmod_proxy_balancerを有効にします。

a2enmod proxy  
a2enmod proxy_balancer  

 そして/etc/apache2/mods-available/proxy.confの設定。

<VirtualHost *>  
ServerName www.kaeruspoon.net  
<IfModule mod_proxy.c>  
        <Location /balancer-manager>  
                SetHandler balancer-manager  

                Order deny,allow  
                Deny from all  
                Allow from 192.168.0  
        </Location>  

        ProxyRequests Off  

        <Proxy *>  
                Order deny,allow  
                allow from all  
        </Proxy>  

        proxyPass / balancer://mycluster/  
        ProxyPassReverse / balancer://mycluster/  
        <Proxy balancer://mycluster>  
                BalancerMember http://192.168.0.1:3000 loadfactor=10 keepalive=On  
                BalancerMember http://192.168.0.1:3001 loadfactor=10 keepalive=On  
                BalancerMember http://192.168.0.1:3002 loadfactor=10 keepalive=On  
        </Proxy>  
</IfModule>  
</VirtualHost>  

 こんな感じ。詳しいことはあちこちでいろんな人が書いているのでそちらを参考に。ぼくは見よう見まねでやっいてるだけです。
 proxyPass / balancer://mycluster/ のところは最後のスラッシュがあったりなかったりするだけで動作が変わってきたりするのでハマりどころでした。

 それからmongrel_clusterの設定。

mongrel_rails cluster::configure -e production -p 3000 -N 3  

 これでRailsアプリがproductionモードで、ポート番号3000, 3001, 3002の3つのプロセスで立ち上がる設定が完了です。あとは、

mongrel_rails cluster::start  

とやれば、設定どおりにRailsアプリが3つ起動します。
とめるときは、

mongrel_rails cluster::stop  

でOK。