RailsをApacheとMongrel_clusterで動かす(中級編)

前回試した設定だとルートにアクセスした時にしか動かないので、こんどはhttp://xxx/bbs/というurlにアクセスした時に動かす用に設定してみた。

まずRailsアプリ側の起動ルートを変更する必要があるのでconfig/mogrel_cluster.ymlを修正する。ここにprefixのパラメータを増やすことでbase_urlが変わる。ここで注意としては、最後が/で終わっているとmongrelが起動しないので必ず文字で終わる必要があった。

---
log_file: log/mongrel.log
port: "8000"
environment: development
pid_file: tmp/pids/mongrel.pid
servers: 5
prefix: /bbs

次に、apachehttpd.confを修正する。はまったのはProxyPassとProxyPassReverseは/bbs/で/で終わるように書く。逆にBalancerMember側はRailsのPrefix側で設定したとおり/bbsで終わるように定義する。

ProxyPass /bbs/ balancer://mycluster/
ProxyPassReverse /bbs/ balancer://mycluster/
<Proxy balancer://mycluster/>
        BalancerMember http://192.168.0.138:8000/bbs loadfactor=20
        BalancerMember http://192.168.0.138:8001/bbs loadfactor=20
        BalancerMember http://192.168.0.138:8002/bbs loadfactor=20
        BalancerMember http://192.168.0.138:8003/bbs loadfactor=20
        BalancerMember http://192.168.0.138:8004/bbs loadfactor=20
</Proxy>

これでApache側にhttp://xxx/bbs/にアクセスするとRailsに正常にアクセスが行われる(http://xxx/bbsはNG)。