mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Unicorn - 起動スクリプト作成!

[ サーバ構築 ] [ Nginx, Rails, Ruby, Unicorn ]

こんばんは。

前回は、Nginx + Unicorn で Rails アプリを動かす設定を行いました。

しかし、Unicorn の起動コマンドを入力するのが面倒すぎるくらいに感じるので、起動スクリプトを作成してみました。

0. 前提条件

  • Linux Mint 14 Nadia (64bit) での作業を想定。
  • Ruby 1.9.3-p362, Rails 3.2.10 で動作確認。
  • Unicorn 4.5.0 で動作確認。
  • 起動スクリプトは Rails アプリ毎に作成することを想定。
  • Rails アプリはサブディレクトリ運用をする。

1. 起動スクリプト作成

起動スクリプト /etc/init.d/unicorn_rails_app を以下の内容で作成する。
(自分の環境に合わせて適宜編集する)

/etc/init.d/unicorn_rails_app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/sh

NAME="Unicorn"
ENV=production

ROOT_DIR="/var/www/rails/rails_app"

PID="${ROOT_DIR}/tmp/pids/unicorn.pid"
CONF="${ROOT_DIR}/config/unicorn.rb"
OPTIONS="--path /rails_app"
CMD="bundle exec unicorn_rails -c ${CONF} -E ${ENV} -D ${OPTIONS}"

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}`
  rm -f $PID
}

force_stop()
{
  if [ ! -e $PID ]; then
    echo "$NAME not started"
    exit 1
  fi
  echo "stop $NAME"
  kill -INT `cat ${PID}`
  rm -f $PID
}

reload()
{
  if [ ! -e $PID ]; then
    echo "$NAME not started"
    start
    exit 0
  fi
  echo "reload $NAME"
  kill -HUP `cat ${PID}`
}

restart()
{
    stop
    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

2. 起動スクリプト実行権限付与

作成した Unicorn 起動スクリプトに実行権限を付与する。

1
$ sudo chmod +x /etc/init.d/unicorn_rails_app

3. Unicorn 起動・停止等

通常のサービスと同様、以下のように Unicorn を操作する。

1
2
3
4
5
$ sudo service unicorn_rails_app start       # 起動
$ sudo service unicorn_rails_app stop        # 停止
$ sudo service unicorn_rails_app force-stop  # 強制停止
$ sudo service unicorn_rails_app reload      # リロード
$ sudo service unicorn_rails_app restart     # 再起動

4. 自動起動設定

マシン起動時に Unicorn も自動的に起動させるには以下のようにする。
(Redhat 系なら chkconfig コマンド)

1
$ sudo update-rc.d unicorn_rails_app defaults

自動起動を解除する場合は以下のようにする。

1
$ sudo update-rc.d -f unicorn_rails_app remove

これで、Unicorn の起動・停止等の際に長くて複雑なコマンドを入力しなくてもよくなりました。

以上。

Comments