Time to Read
3分
ブログを移行してるんですが(実は)、頓挫気味なので普通にブログ記事を増やします。
今日は、懐かしのアイテム mongrel の進化版といわれる mongrel2 を、Rubyのために使います。サンプルとして Padrino を使いますが、この先を見ての通り rackup で走らせるんで、大抵の Ruby 製フレームワークでイケるって信じてます。
まず、 ZeroMQ を入れる
GettingStarted を参照に。
ここで罠なんですけど、DebianとかUbuntuのレポジトリには普通に libzmq-dev が存在してしまっていますが、バージョンが若干古くて mongrel2 がコンパイル出来ません! 素直にソースインストールするしかない模様……(deb作ってもいいですけど)。
追記: Ubuntu natty や Debian sid のZeroMQのバージョンは、公式GettingStartedで落としてきているのと同じ 2.0.10 なので、こちらならビルド可能かもしれません。
1 2 3 4 5 | wget http://download.zeromq.org/zeromq-2.1.6.tar.gz # いつもの tar xzf zeromq-2.1.6.tar.gz && cd zeromq-2.1.6/ && ./configure && make && sudo make install # おまじない sudo ldconfig |
Mongrel2 を入れる
これも、普通にビルドしましょう。今回「とりあえず立ち上げる」感がありますので色々適当ですすいません。
1 2 | wget http://mongrel2.org/static/downloads/mongrel2-1.5.tar.bz2 tar xjf mongrel2-1.5.tar.bz2 && cd mongrel2-1.5/ && make clean all && sudo make install |
Padrino のプロジェクトを作る
投げやりな感じで作ります。
1 2 3 4 | gem install padrino padrino gen project mongrino cd mongrino mkdir log run # 作ってくれないので… |
Gemfile を編集:
1 2 | # Server gem 'rack-mongrel2', '~> 0.2.0', :require => nil |
しかるのち bundle 。
投げやりなコントローラを作る:
1 2 3 4 5 6 7 8 9 10 | # in app/controllers/index.rb Mongrino.controllers :index do get :index do "Hello, mongrino" end get :show, :map => "/:name" do "Hello, #{params[:name]}" end end |
Mongrel2 を立ち上げる
まず、 mongrel2.conf を適当に作る。リポジトリにあるサンプルを落としてきて編集すればいいんじゃないかな。もしくは下のgistをそのまま使ってください。
設定のためのsqliteデータベースを作成:
1 | m2sh load -config mongrel2.conf --db config/mongrel2.sqlite |
その設定.sqlite を元に、mongrel2プロセスを起動:
1 | m2sh start --db config/mongrel2.sqlite -uuid padrino-example -sudo |
デーモン化するオプションが「-sudo」らしいです。
Padrino を rackup
1 | rackup -s Mongrel2 |
これだけ。padrino start -a は対応していないので、こっちで起動したい場合は(おそらく、僅かばかりの)ハックが必要でしょう。
http://localhost:8080 を見てみましょう。
立ち上がっています。 http://localhost:8080/%E3%81%86%E3%81%A5%E3%82%89 みたいなのも問題無し。
What’s good???
Mongrel2 にすることのメリット? は実はあんまよく分かっていません。Rubyアプリケーションレベルでの再起動の際には、Mongrel2は再起動要らないんで、再起動とかスピンアップとかが高速になるかもしれません(でも、unicornと比べてメリットがあるかって言うと……)。あと、他の言語で書いたアプリケーションと一緒に動かす際に良さそう?
Mongrel2 のドキュメントを詳しく見てみようかな~とか思っています。





