2009/11/20

nginx mongrel_rails

Ubuntu で Rails と思ったわけです
パッケージ使えばいいとは思うのですが
Ruby というか Rails 周りは動きが速かったりするので
追従するには手作りかなと思い Ruby から作りました
で、gem 入れて rails 入れたり他のも入れたり

rails 自体は何で動かそうかなーと思ったのですが
mongrel ってのがスタンダードだと以前聞いていたのでそれで
で、その前に流行りの nginx を置いてみることにしました

ググってみたところ mongrel_cluster ってのを使えと
Ruby on Rails: mongrel_clusterのフロントエンドに nginxを使用する
これは、サービスとして mongrel を使うならば
バックエンドが例え1プロセスだとしても使った方が良いとのことで
素直に従うことに

でも、まぁ、結局 init script はどうにかするしかないかぁ〜
自前で書くような技術も根性も無いので参考が欲しい!
Ubuntu だしパッケージの中のを見ればいいだろうと思って
apt-get には無かったけど aptitude に download ってコマンドがあったので
$ aptitude download mongrel-cluster
$ aptitude download nginx
などして deb ファイル取ってきて
ar -x とか tar xfz で中身とりだして適当にスクリプトを眺めました
そして init script も完成

良く分からなかったのが gem install mongrel_cluster で入れたら
設定ファイルが /etc/mongrel_cluster であることが前提みたいで
できるだけ Ubuntu のものと被らせたくないなと思ってたんですが
設定方法が分からなかったんで symlink で逃げることにしました
もぉ、Ubuntu の mongrel-cluster は入れれません
や、入れないけど

mongrel_cluster によって何か恩恵にあずかれたのかは良く分からず
でも、とりあえず形にする為に一旦そこは放置で

nginx が前にいますが
Rails のとあるアプリ? だけ見えるようにしたかったので
proxy_pass で飛ばすのにルールが必要かなーと思ったんですが
今度は真面目にドキュメントにあたってみたら
NginxHttpProxyModule
rewrite 使って書き換えてから proxy_pass かましてました
や、あたりまえな気が今ではしています
        location / {
root html;
rewrite ^/$ /application break;
proxy_pass http://mongrel_cluster;
}
みたいにしてみました

あと、他のアプリは別途 location 立てて auth_basic しておきました
htpasswd は apache2-utils に入ってたので入れちゃいました
別途 location 立てるのが何か無駄な気がするんだけど仕方ないのかな
auth_basic が if の中では使えないので、まぁ、仕方ないのか?

久しぶりにこの辺の設定したので凄い頭痛くなりました

0 件のコメント:

コメントを投稿