使用Ubuntu init脚本的unicorn服务器

时间:2015-11-12 15:47:50

标签: ruby ubuntu unicorn init.d

我根据此digitalocean tutorial为独角兽创建了此checkbox脚本。

init.d

现在(脚本名称为#!/bin/sh ### BEGIN INIT INFO # Provides: unicorn # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the unicorn app server # Description: starts unicorn using start-stop-daemon ### END INIT INFO set -e USAGE="Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>" # app settings USER="deploy" APP_NAME="appname" APP_ROOT="/home/$USER/$APP_NAME" ENV="production" # environment settings PATH="/home/$USER/.rbenv/shims:/home/$USER/.rbenv/bin:$PATH" CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D" PID="$APP_ROOT/shared/pids/unicorn.pid" OLD_PID="$PID.oldbin" # make sure the app exists cd $APP_ROOT || exit 1 sig () { test -s "$PID" && kill -$1 `cat $PID` } oldsig () { test -s $OLD_PID && kill -$1 `cat $OLD_PID` } case $1 in start) sig 0 && echo >&2 "Already running" && exit 0 echo "Starting $APP_NAME" su - $USER -c "$CMD" ;; stop) echo "Stopping $APP_NAME" sig QUIT && exit 0 echo >&2 "Not running" ;; force-stop) echo "Force stopping $APP_NAME" sig TERM && exit 0 echo >&2 "Not running" ;; restart|reload|upgrade) sig USR2 && echo "reloaded $APP_NAME" && exit 0 echo >&2 "Couldn't reload, starting '$CMD' instead" $CMD ;; rotate) sig USR1 && echo rotated logs OK && exit 0 echo >&2 "Couldn't rotate logs" && exit 1 ;; *) echo >&2 $USAGE exit 1 ;; esac

uicorn_app

的工作原理。但每当我尝试

sudo update-rc.d `unicorn_app` defaults

但是我可以通过

停止它
 $ sudo service unicorn_app start
 Starting app
 -su bundle: command not found

我用

手动启动后
$ sudo service unicorn_app stop

我通过rbenv和RAILS_ENV=production rails s -b ip.ip.ip.ip ruby on rails上安装了/etc/local 第一个条目重定向到正确的目录:

PATH

我需要更改我的脚本找到捆绑包吗?既然我认为PATH是正确的还有什么可能出错?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

好的解决方案是使用rbenv安装。我需要将行PATHRBENV_ROOT添加到〜/ .bash_profile中。添加它们后,我可以通过sudo service unicorn_app start

启动独角兽