ECのウェブ担当者のメモ

ECサイトを運営管理している、WEB担当プログラマのメモ

スポンサーリンク

NginxとUnicornを使っていたら自動起動設定は必須

f:id:jun9632:20160304224550p:plain

Rails x Nginx x Unicornの組み合わせをよく見かける気がします。 私もその1人なのですが、
Nginx と Unicornを使ったらそれ ぞれに自動起動の設定を入れておくべきだと思います。

以前にNginxについては、自動起動の方法を書いているので Nginxについてはそちらを参照してください。

marketing-web.hatenablog.com

今回は、Unicornの自動起動がメインの記事になります。

起動スクリプトの作成

/etc/init.d/unicorn を以下のように作ります。

#!/bin/sh

#chkconfig:2345 85 70
#description:unicorn shell

NAME="Unicorn"
ENV=production

ROOT_DIR="/var/www/pr-mall/current"
USER="admin"
GEMFILE="${ROOT_DIR}/Gemfile"
PID="${ROOT_DIR}/tmp/pids/unicorn.pid"
CONF="${ROOT_DIR}/config/unicorn.conf.rb"
OPTIONS=""

start()
{
  if [ -e $PID ]; then
    echo "$NAME already started"
    exit 1
  fi
  echo "start $NAME"
  cd $ROOT_DIR
  su - ${USER} -c "cd ${ROOT_RIR} && BUNDLE_GEMFILE=${GEMFILE} bundle exec unicorn -c ${CONF} -E ${ENV} -D ${OPTIONS}"
}

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
    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

変数部分を自分の環境に合わせて調整してください。

テスト起動/停止

以下で、起動と停止が確認できます。

起動

/etc/init.d/unicorn start

停止

/etc/init.d/unicorn stop

chkconfigの設定

chkconfigで設定を追加して、

$ sudo chkconfig unicorn on
$ sudo chkconfig unicorn --list

unicorn         0:off   1:off   2:on    3:on    4:on    5:on    6:off

上記のようになれば、OKです。 可能であれば、一度サーバーを再起動して試してみてください。

参考サイト

ほぼこちらのサイトのまんまです。 ただ、リンクだけ貼っておけば問題ない気もしていますが、 備忘録も兼ねた記事です。

tkoyama1988.hatenablog.com

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

Ruby on Rails環境構築ガイド

Ruby on Rails環境構築ガイド