実はthinはmongrel_cluster的な機能を持っていた
http://articles.slicehost.com/2008/5/6/ubuntu-hardy-thin-web-server-for-rubyを読んでいて初めて知ったことが多かったので、メモがてらにここで紹介します。
そもそもthinって何よ
Thin is a Ruby web server that glues together 3 of the best Ruby libraries in web history:
http://code.macournoyer.com/thin/
* the Mongrel parser, the root of Mongrel speed and security
* Event Machine, a network I/O library with extremely high scalability, performance and stability
* Rack, a minimal interface between webservers and Ruby frameworks
Which makes it, with all humility, the most secure, stable, fast and extensible Ruby web server bundled in an easy to use gem for your own pleasure.
要はMongrelのパーサーを使って、EventMachineというネットワーク I/O ライブラリを使って、Rackに対応したRuby製サーバです。
thinの起動と終了
せっかくなのでデーモンモードで起動させてみる。
~ > cd railsapp railsapp > thin start -d
このようにRailsのrootに移動して、'-d'オプション付きで実行するのみ。'-p'オプションを付けてポートの指定、'-e'オプションを付けてproductionなどの環境指定などもできます。
そして終了。おいらはいちいち
~ > ps -ax | grep thin ~ > kill {PID}
としていたのですが、どうやらPIDは探さなくてもいいご様子。それならどうするかって言いますと
~ > thin stop
とするだけで終了します。簡単すぐる。
クラスタ化
mongrelだと別途mongrel_clusterをインストールしてクラスタ化するんだったと思うのですが、thinはそのままクラスタ化することが可能です。
thin start --servers 3
そして終了も同じようにPIDを探さずにできます。
thin stop --servers 3
わざわざ全てのPIDを探してそれぞれkillしなくてもいいってのはすごい便利。
サービス化(Runlevel)
なんと、/etc/init.d/以下に自身を追加してサービス化することも可能です。
~ > sudo thin install ~ > sudo /usr/sbin/update-rc.d -f thin defaults
これだけ。
ここで仮に /home/demo/public_html/testapp をサーバー数3,production環境でサービスとして登録する場合の手順が元記事に書いてありましたので、そのまま転載します。
~ > sudo thin config -C /etc/thin/testapp.yml -c /home/demo/public_html/testapp/ --servers 3 -e production
こうすると /etc/thin/testapp.yml に設定用のyamlファイルが書きだされます。
~ > cat /etc/thin/testapp.yml pid: tmp/pids/thin.pid log: log/thin.log timeout: 30 max_conns: 1024 port: 3000 max_persistent_conns: 512 chdir: /home/demo/public_html/testapp environment: production servers: 3 address: 0.0.0.0 daemonize: true
もし設定を変更したければ、ここの設定を書き換えるだけでOKです。
その他
ほかにも出来る事が色々あるので、オプション見るときはヘルプを見てね、ということです。
~ > thin -h
言われて見てみたのですが、何やら見た事もない機能が追加されていて、結構わくわくします。