追記 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 件のコメント:
コメントを投稿