NginxとUnicornを使っていたら自動起動設定は必須
Rails x Nginx x Unicornの組み合わせをよく見かける気がします。
私もその1人なのですが、
Nginx と Unicornを使ったらそれ
ぞれに自動起動の設定を入れておくべきだと思います。
以前にNginxについては、自動起動の方法を書いているので Nginxについてはそちらを参照してください。
今回は、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です。 可能であれば、一度サーバーを再起動して試してみてください。
参考サイト
ほぼこちらのサイトのまんまです。 ただ、リンクだけ貼っておけば問題ない気もしていますが、 備忘録も兼ねた記事です。
関連記事
- 作者: 黒田努
- 出版社/メーカー: インプレス
- 発売日: 2013/03/22
- メディア: Kindle版
- この商品を含むブログを見る