実は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:
* 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.

http://code.macournoyer.com/thin/

要はMongrelのパーサーを使って、EventMachineというネットワーク I/O ライブラリを使って、Rackに対応したRuby製サーバです。

thinのインストール

~ > sudo gem install thin

今はWin用のバイナリ版も用意されているので、Winでもコンパイル環境整えていなくても使用が可能になっています。

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

言われて見てみたのですが、何やら見た事もない機能が追加されていて、結構わくわくします。