32
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Rails server(WEBrick)をデーモンぽく起動/停止/再起動するスクリプト作ったよ

以下のスクリプトを適当なファイル名で保存&実行権限をつければOK
Rails4.0.2環境下で動作確認しましたが、多分だいたい大丈夫なはず。

#!/bin/sh
set -e
set -u

# アプリケーションのルートディレクトリを指定
APPLICATION_ROOT="/your/project/path"

# オプション設定
# 下記はデフォルトの値。変更したい場合は適宜編集
# ENVIRONMENT = test/development/production のいずれか。
PORT="3000"
BINDING_IP="0.0.0.0"
ENVIRONMENT="development"

start () {
  cd ${APPLICATION_ROOT}
  rails server --daemon --binding=${BINDING_IP} --port=${PORT} --environment=${ENVIRONMENT}
}

stop () {
  cat ${APPLICATION_ROOT}/tmp/pids/server.pid | xargs kill -9
}

restart () {
  stop
  start
}

status () {
  # プロセスを表示。起動していなければ表示なし
  # ちょっと手抜き実装。
  ps aux | grep "[r]ails server"
}

help () {
  echo "Usage: $0 {start|stop|restart|status|help}"
}

# 引数のサイズをチェック
# set -u と $1を併用するためのhack
# http://tech.lampetty.net/tech/index.php/archives/455
if [ $# -lt 1 ]; then
    help
    exit 1
fi

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  status)
    status
    ;;
  help)
    help
    ;;
  *)
    help
    exit 1
esac

exit $?

仮に"Rserver"というファイル名にしたのであれば、

$ ./Rserver # help表示
$ ./Rserver help # help表示
$ ./Rserver start # 起動
$ ./Rserver stop # 停止
$ ./Rserver restart # 再起動
$ ./Rserver status # (起動していれば)プロセス表示

webサーバが起動していない場合に停止コマンドを叩くと、関係ないプロセスを殺す可能性がある、
というバグが残っているので、ご利用は計画的に。そのうちなおします。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
32
Help us understand the problem. What are the problem?