unicornを自動起動してみる by ubuntu sinatra
さくらVPSで先月と今月、勝手に再起動かかってサービス動いてないのにしばらく気づけなかったのでunicornの自動起動設定してみた
ぐぐった先からシェルもらってきて動かしたけど
unicorn not found
って言われた
調べたらrvm使ってたらラッパーなるものを作りなさいと
rvm wrapper 2.0.0@default start unicorn
するとホームにstart_unicornっていうリンクファイルができるのでこれを呼ぶように変更
/home/ubuntu/.rvm/bin/start_unicorn
#!/bin/sh NAME="Unicorn" ENV=production ROOT_DIR="/var/www/blog" PID="${ROOT_DIR}/tmp/pids/unicorn.pid" CONF="${ROOT_DIR}/unicorn.conf" CMD="/home/ubuntu/.rvm/bin/start_unicorn -c ${CONF} -E ${ENV} -D" start() { if [ -e $PID ]; then echo "$NAME already started" exit 1 fi echo "start $NAME" cd $ROOT_DIR $CMD } stop() { if [ ! -e $PID ]; then echo "$NAME not started" exit 1 fi echo "stop $NAME" kill -QUIT `cat ${PID}` } force_stop() { if [ ! -e $PID ]; then echo "$NAME not started" exit 1 fi echo "stop $NAME" kill -INT `cat ${PID}` } reload() { if [ ! -e $PID ]; then echo "$NAME not started" start exit 0 fi echo "reload $NAME" kill -HUP `cat ${PID}` } restart() { stop # Unicorn が停止し切らない内に起動しようとしないように sleep 3 start } case "$1" in start) start ;; stop) stop ;; force-stop) force_stop ;; reload) reload ;; restart) restart ;; *) echo "Syntax Error: release [start|stop|force-stop|reload|restart]" ;; esac
実行権限付与
sudo chmod +x /etc/init.d/unicorn
sudo service unicorn start # 起動 sudo service unicorn stop # 停止 sudo service unicorn force-stop # 強制停止 sudo service unicorn reload # リロード sudo service unicorn restart # 再起動
いけたー
あとはVPS起動時の設定
sudo update-rc.d unicorn defaults # 自動起動 sudo update-rc.d unicorn disable # 停止 sudo update-rc.d unicorn enable # 再開 sudo update-rc.d -f unicorn remove # 解除
もしくは
sudo sysv-rc-conf -list #確認 sudo sysv-rc-conf unicorn on #自動起動 sudo sysv-rc-conf unicorn off #停止
参考
Design Recipe 別館 Blog - Rack アプリケーション向けの HTTP サーバ Unicorn の基本操作
Unicorn - 起動スクリプト作成! - mk-mode BLOG
RVM: Ruby Version Manager - Using God with RVM
rvm で unicorn -- BONNOH FRACTION 14
rvm のgemsetをおさらい(Mac でRuby) - たぐってつづる