2013年10月15日火曜日

unicornの自動起動スクリプト


追記 13/11/07

statusがうまく機能しないようです。すいません。


ubuntu12.04.03でunicornを使うrubyのアプリを自動起動するスクリプトです。
主にrailsで作ったアプリを想定しています。
参考にした本はこちら:Ruby on Rails環境構築ガイド

なお,unicorn自体の起動コマンドは,下記の通り。

$cd /path/to/rubyapp/
$bundle exec unicorn_rails -c config/unicorn.rb -E production -D


環境
アプリを起動するユーザ:test アプリのホーム:/home/test/rubyapp

最初に,空の起動スクリプトを作成。

sudo nano /etc/init.d/rubyapp



#! /bin/sh

### BEGIN INIT INFO
# Provides:          test  #作成者の名前
# 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:   #短い説明
# Description:       starts redmine ( a rails app ) using start-stop-daemon #説明
### END INIT INFO

USER=test  # rubyのアプリを実行するuser名を入れる。
APP_ROOT=/home/test/rubyapp
RAILS_ENV=production
PID_FILE=$APP_ROOT/tmp/pids/unicorn.pid  #unicorn.rbで指定した値を入れる。
CONFIG_FILE=$APP_ROOT/config/unicorn.rb  #unicorn.rbへのパスを入れる。
CMD="/usr/local/bin/bundle exec /usr/local/bin/unicorn_rails" 
# bundleとunicorn_railsへのバスは,whereisで調べられる。railsのアプリじゃない場合は,/usr/local/bin/unicornで良いのでは?
ARGS="-c $CONFIG_FILE -D -E $RAILS_ENV"
export PATH=/usr/local/bin:$PATH

case $1 in
  start)
    start-stop-daemon --start --chuid $USER --chdir $APP_ROOT \
      --exec $CMD -- $ARGS || true
    ;;
  stop)
    start-stop-daemon --stop --signal QUIT --pidfile $PID_FILE || true
    ;;
  restart|force-reload)
    start-stop-daemon --stop --signal USR2 --pidfile $PID_FILE || true
    ;;
  status)
    status_of_proc -p $PID_FILE "$CMD" redmine && exit 0 || exit $?
    ;;
  *)
  echo >&2 "Usage: $0 "
  exit 1
  ;;
esac

保存したら,次のコマンドでファイルのパーミションを変更する。
sudo chmod 755 /etc/init.d/rubyapp
これで,
service rubyapp start
:rubyappの起動
service rubyapp stop
:rubyappの停止
service rubyapp restart
:rubyappの再起動
service rubyapp status
:rubyappのステータス表示 ができるようになる。 サービスに追加してOSの起動時に,自動で起動するようにするには,下記のコマンドを実行。
sudo update-rc.d rubyapp defaults
これで,unicorn上でrubyのアプリの自動起動ができる。

0 件のコメント:

コメントを投稿