SinatraアプリをApache2のmod_proxy_balancerを通してThinで動かす(1) – Thinの設定

  • このエントリーをはてなブックマークに追加

今、WebアプリケーションのAPIサーバをRubyフレームワークSinatraでつくっていて、これを本格的に動かすときにWebサーバをどうしよう。ということになって、Thinが良いらしいという情報を得たので導入してみた。
現状、動いているApacheサーバがあるので、reverse proxyを通して特定のエントリポイントに対してアクセスがあったもののみをフォワードし、Thinを通してSinatraアプリにつなぐことを目標にします。

f:id:hideack:20111103165746p:image

インストールは非常に簡単。

% gem install thin

これで準備OK。簡単ですね。
次にアプリケーションを呼び出すためのファイルを作ります。
ここでは、ファイル名をconfig.ruとします。内容的には以下の様な形。
ここでrequireされているapp.rbはSinatraアプリ本体です。

# config.ru
require 'rubygems'
require 'sinatra'
require './app.rb'
run Sinatra::Application

単純に呼び出してるだけですね。
続けて、Thin本体の設定ファイルを作ります。
まずは中身。

# thin.yaml
timeout: 30
log: log/thin.log
environment: production
servers: 5
daemonize: true
rackup: config.ru
port: 4040

おおよそ設定見てもらったままなのですが、上記の設定でThinサーバのデーモンプロセスが5本起動されます。
利用されるポート番号は4040〜4044までとなります。
続けて、ログファイルの保管先とプロセス管理用のファイル保管されるディレクトリを予め作っておきます。

$ mkdir log
$ mkdir tmp

これでThin本体の準備完了。実際に動かしてみます。

$ thin start -C thin.yaml
Starting server on 0.0.0.0:4040 ...
Starting server on 0.0.0.0:4041 ...
Starting server on 0.0.0.0:4042 ...
Starting server on 0.0.0.0:4043 ...
Starting server on 0.0.0.0:4044 ...

起動完了。試しに動作を確認したければ、wget等で起動したいずれかのポートに対してwgetを叩けば挙動を確認できますね。
止める場合は、$ thin stop -C thin.yaml でOKです。(restartも)
tmpディレクトリには、起動中のプロセスのpidファイルが、logディレクトリにはそれぞれのThinサーバへのアクセスログが記録されます。

$ ls -l tmp/pids/
total 40

  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4040.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4041.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4042.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4043.pid
  • rw-r--r-- 1 hideack staff 5 11 3 16:30 thin.4044.pid

$ ls -l log/
total 40

  • rw-r--r-- 1 hideack staff 585 11 3 16:30 thin.4040.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4041.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4042.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4043.log
  • rw-r--r-- 1 hideack staff 360 11 3 16:30 thin.4044.log
(Visited 27 times, 1 visits today)
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*