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
次に、apacheのhttpd.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)。