Amazon Linux再起動時にUnicornが自動的に起動しない
Amazon Linux再起動時にUnicornが自動的に起動されません。
環境
OS Amazon Linux
ruby 2.2.3
rails 4.2.3
nginx 1.9.11
unicorn 5.0.1
unicornの起動スクリプトはetc/init.d/
にファイル名unicorn
として配置しランレベル3と5をオンにしています。
sudo service unicorn start
後に問題なく起動できており、sudo service unicorn stop
で停止もできています。しかし、再起動させるとunicornが起動していません。また、起動していないのになぜかpidファイルはあります。sudo service unicorn stop
コマンド実行時はpidファイルが消えてその後sudo service unicorn start
を実行できていますのでなぜpidファイルだけ残っているのか分かりません。
起動スクリプトは下記の通りとなっています。
#!/bin/sh
#
#
# unicorn - this script starts and stops the unicorn daemon
#
# chkconfig: - 85 15
# description: Unicorn is Rack Rails Server
# Source function library.
. /etc/rc.d/init.d/functions
PROG_NAME=unicorn
APP_ROOT=/home/ec2-user/rails_test
ENV=production
PID_FILE=/var/run/rails-app-unicorn.pid
LOCK_FILE=/var/lock/subsys/unicorn
CONF="${APP_ROOT}/config/unicorn.rb"
CMD="bundle exec unicorn -c ${CONF} -E ${ENV} -D"
export PATH=/home/ec2-user/.rbenv/shims:/home/ec2-user/.rbenv/bin:$PATH
cd $APP_ROOT || exit 1
case $1 in
start)
daemon $CMD
touch $LOCK_FILE
;;
stop)
killproc -p $PID_FILE $PROG_NAME -QUIT
rm -f $LOCK_FILE
;;
restart)
killproc -p $PID_FILE $PROG_NAME -USR2
;;
*)
echo >&2 "Usage: $0 <start|stop|restart>"
exit 1
;;
esac
ご指摘やアドバイス頂けると助かります。
よろしくお願いします。
追記
原因が分かりました。
unicorn起動時にpostgresが起動していなければならないところ、postgresが起動していなかったのが原因でした。postgresの起動優先度が98に設定されているので起動スクリプトの# chkconfig: - 85 15
を# chkconfig: - 99 15
に変更することで無事に起動できました。