unicornを自動起動してみる by ubuntu sinatra

さくらVPSで先月と今月、勝手に再起動かかってサービス動いてないのにしばらく気づけなかったのでunicornの自動起動設定してみた
ぐぐった先からシェルもらってきて動かしたけど
unicorn not found
って言われた
調べたらrvm使ってたらラッパーなるものを作りなさいと

rvm wrapper 2.0.0@default start unicorn

するとホームにstart_unicornっていうリンクファイルができるのでこれを呼ぶように変更

/home/ubuntu/.rvm/bin/start_unicorn

シェルスクリプト
/etc/init.d/unicorn

#!/bin/sh
 
NAME="Unicorn"
ENV=production

ROOT_DIR="/var/www/blog"
 
PID="${ROOT_DIR}/tmp/pids/unicorn.pid"
CONF="${ROOT_DIR}/unicorn.conf"
CMD="/home/ubuntu/.rvm/bin/start_unicorn -c ${CONF} -E ${ENV} -D"
 
start()
{
  if [ -e $PID ]; then
    echo "$NAME already started"
    exit 1
  fi
  echo "start $NAME"
  cd $ROOT_DIR
  $CMD
}
 
stop()
{
  if [ ! -e $PID ]; then
    echo "$NAME not started"
    exit 1
  fi
  echo "stop $NAME"
  kill -QUIT `cat ${PID}`
}
 
force_stop()
{
  if [ ! -e $PID ]; then
    echo "$NAME not started"
    exit 1
  fi
  echo "stop $NAME"
  kill -INT `cat ${PID}`
}
 
reload()
{
  if [ ! -e $PID ]; then
    echo "$NAME not started"
    start
    exit 0
  fi
  echo "reload $NAME"
  kill -HUP `cat ${PID}`
}
 
restart()
{
    stop
    # Unicorn が停止し切らない内に起動しようとしないように
    sleep 3
    start
}
 
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  force-stop)
    force_stop
    ;;
  reload)
    reload
    ;;
  restart)
    restart
    ;;
  *)
    echo "Syntax Error: release [start|stop|force-stop|reload|restart]"
    ;;
esac

実行権限付与

sudo chmod +x /etc/init.d/unicorn
sudo service unicorn start       # 起動
sudo service unicorn stop        # 停止
sudo service unicorn force-stop  # 強制停止
sudo service unicorn reload      # リロード
sudo service unicorn restart     # 再起動

いけたー
あとはVPS起動時の設定

sudo update-rc.d unicorn defaults  # 自動起動
sudo update-rc.d unicorn disable   # 停止
sudo update-rc.d unicorn enable    # 再開
sudo update-rc.d -f unicorn remove # 解除

もしくは

sudo sysv-rc-conf -list       #確認
sudo sysv-rc-conf unicorn on  #自動起動
sudo sysv-rc-conf unicorn off #停止

参考
Design Recipe 別館 Blog - Rack アプリケーション向けの HTTP サーバ Unicorn の基本操作
Unicorn - 起動スクリプト作成! - mk-mode BLOG
RVM: Ruby Version Manager - Using God with RVM
rvm で unicorn -- BONNOH FRACTION 14
rvm のgemsetをおさらい(Mac でRuby) - たぐってつづる