コピペコードで快適生活

明日使えるソースを自分のために

serviceコマンドでunicorn起動するための設定サンプル

下記ファイル を /etc/init.d/ に配置する。

#!/bin/sh
# chkconfig: 345 99 01
# description: unicorn as Rails app server

SERVICE="unicorn"
ENV="production"

RAILS_ROOT="/var/www/app/current"
CONFIG=$RAILS_ROOT"/config/unicorn/"$ENV".rb"
PID_FILE=$RAILS_ROOT"/tmp/pids/unicorn.pid"

start() {
    START_CMD="cd $RAILS_ROOT && (RAILS_ENV=$ENV /usr/bin/env bundle exec unicorn -c $CONFIG -E $ENV -D)"
    su -l $USER -c "$START_CMD" &
    echo "service $SERVICE [start]"
}

stop() {
    STOP_CMD="cd $RAILS_ROOT && /usr/bin/env kill -s QUIT `cat $PID_FILE`"
    su -l $USER -c "$STOP_CMD" &
    echo "service $SERVICE [stop]"
}

status() {
    PID=`pgrep -f $CONFIG | wc -l`
    if [ $PID -eq 0 ]; then
        echo "$SERVICE stop"
    else
        echo "running $SERVICE ..."
    fi
}


case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    stop
    start
    ;;
status)
    status
    ;;
*)
    echo "Usage: $SERVICE [start|stop|restart|status]"
    ;;
esac
exit 0

下記コマンドで service に登録する

# /etc/init.d
# sudo chkconfig --add unicorn

使い方

# sudo service unicorn [start|stop|restart|status]