以下のスクリプトを適当なファイル名で保存&実行権限をつければ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サーバが起動していない場合に停止コマンドを叩くと、関係ないプロセスを殺す可能性がある、
というバグが残っているので、ご利用は計画的に。そのうちなおします。