sinatraアプリケーションをthinを使ってマルチプロセスでデーモン起動する

参考ページ
http://jordanhollinger.com/2011/04/22/how-to-use-thin-effectivly

config.ruファイルを用意する。

# vi config.ru

# coding :UTF-8
require 'app.rb'
run App.new

thinの起動スクリプトを修正する。デフォルトだと、CONFIG_PATH配下にある全ファイル、全ディレクリを設定ファイルとして扱おうとするので、thin.ymlのみを指定する。

# vi /etc/rc.d/thin

#!/bin/sh
### BEGIN INIT INFO
# Provides:          thin
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: thin initscript
# Description:       thin
### END INIT INFO
# Original author: Forrest Robertson
# Do NOT "set -e"
DAEMON=/usr/local/bin/thin
SCRIPT_NAME=/etc/rc.d/thin
# CONFIG_PATH=/etc/thin
CONFIG_FILE=/etc/thin/thin.yml
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
case "$1" in
  start)
   # $DAEMON start --all $CONFIG_PATH
  $DAEMON start --config $CONFIG_FILE
  ;;
  stop)
  # $DAEMON stop --all $CONFIG_PATH
  $DAEMON stop --config $CONFIG_FILE
  ;;
  restart)
  # $DAEMON restart --all $CONFIG_PATH
  $DAEMON restart --config $CONFIG_FILE
  ;;
  *)
  echo "Usage: $SCRIPT_NAME {start|stop|restart}" >&2
  exit 3
  ;;
esac

thinの設定ファイルを修正する。
マルチプロセスで起動するためにはserversに1以上の値を指定する。

# vi /etc/thin/thin.yml

chdir: /your/application/dirrectory
environment: production
address: 0.0.0.0
port: 80
timeout: 30
log: log/thin.log
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 100
require: []
wait: 30
daemonize: true
rackup: config.ru
servers: 5

thinを起動する。

# /etc/rc.d/thin start