thin の自動起動スクリプト on Debian

サーバを再起動したときに,いちいち mongrel/thin を立ち上げないといけないのがどうもなーと思っていたので,さっと書いてみました.

まずは下記ファイルを /etc/init.d/webapp とかに保存します.

#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides:          webapp
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop thin application server
### END INIT INFO

PATH=$PATH:/opt/ruby-enterprise/bin
BASEDIR=/var/repos/webapp
CURRENT_NAME=$BASEDIR/current
THIN_CONFIG=$BASEDIR/shared/config/thin.yml

case $1 in
  start)
  thin -c $CURRENT_NAME -C $THIN_CONFIG start
  ;;
  stop)
  thin -c $CURRENT_NAME -C $THIN_CONFIG stop
  ;;
  restart)
  thin -c $CURRENT_NAME -C $THIN_CONFIG stop
  thin -c $CURRENT_NAME -C $THIN_CONFIG start
  ;;
  *)
  echo "Usage: webapp (start|stop|restart)"
  ;;
esac

そしておもむろに

$ sudo chmod a+x /etc/init.d/webapp
$ sudo update-rc.d webapp start 95 2 3 4 5 . stop 20 0 1 6 .
$ sudo invoke-rc.d webapp start
Starting server on 0.0.0.0:4000 ...

と入力すると自動的に thin が起動します.mongrel や他のサーバを使う場合は適宜書き換えてみてください.

「Passenger 使えばいいじゃん」と言われそうですが,Passenger は Apache/Nginx とか入れないとダメだし,「gateway -> App server」みたいな構成だと thin だけにしたいというのもあるのです.まあ趣味の問題ですが.

 
comments powered by Disqus