Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用标准unicorn_init.sh启动rails应用程序_Linux_Bash_Ruby On Rails 4 - Fatal编程技术网

Linux 使用标准unicorn_init.sh启动rails应用程序

Linux 使用标准unicorn_init.sh启动rails应用程序,linux,bash,ruby-on-rails-4,Linux,Bash,Ruby On Rails 4,我将标准unicorn_init.sh文件sym链接到my/etc/init.d #!/bin/sh set -e # Example init script, this can be used with nginx, too, # since nginx and unicorn accept the same signals # Feel free to change any of the following variables for your app: TIMEOUT=${TIMEOUT

我将标准unicorn_init.sh文件sym链接到my/etc/init.d

#!/bin/sh
set -e
# Example init script, this can be used with nginx, too,
# since nginx and unicorn accept the same signals

# Feel free to change any of the following variables for your app:
TIMEOUT=${TIMEOUT-60}
APP_ROOT=<APP HOME DIRECTORY>
PID=$APP_ROOT/tmp/pids/unicorn.pid
CMD="cd $APP_ROOT; $APP_ROOT/bin/unicorn -D -c $APP_ROOT/config/unicorn.rb -E production"
action="$1"
set -u

old_pid="$PID.oldbin"

cd $APP_ROOT || exit 1

sig () {
        test -s "$PID" && kill -$1 `cat $PID`
}

oldsig () {
        test -s $old_pid && kill -$1 `cat $old_pid`
}

case $action in
start)
        sig 0 && echo >&2 "Already running" && exit 0
        su -c "$CMD" - <USER>
        ;;
stop)
        sig QUIT && exit 0
        echo >&2 "Not running"
        ;;
force-stop)
        sig TERM && exit 0
        echo >&2 "Not running"
        ;;
restart|reload)
        sig HUP && echo reloaded OK && exit 0
        echo >&2 "Couldn't reload, starting '$CMD' instead"
        su -c "$CMD" - <USER>
        ;;
upgrade)
        if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
        then
                n=$TIMEOUT
                while test -s $old_pid && test $n -ge 0
                do
                        printf '.' && sleep 1 && n=$(( $n - 1 ))
                done
                echo

                if test $n -lt 0 && test -s $old_pid
                then
                        echo >&2 "$old_pid still exists after $TIMEOUT seconds"
                        exit 1
                fi
                exit 0
        fi
        echo >&2 "Couldn't upgrade, starting '$CMD' instead"
        su -c "$CMD" - <USER>
        ;;
reopen-logs)
        sig USR1
        ;;
*)
        echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
        exit 1
        ;;
esac
#/垃圾箱/垃圾箱
set-e
#示例init脚本,也可以与nginx一起使用,
#因为nginx和unicorn接受相同的信号
#请随意更改应用程序的以下任何变量:
超时=${TIMEOUT-60}
根=
PID=$APP_ROOT/tmp/pids/unicorn.PID
CMD=“cd$APP_ROOT;$APP_ROOT/bin/unicorn-D-c$APP_ROOT/config/unicorn.rb-E生产”
action=“$1”
set-u
old_pid=“$pid.oldbin”
cd$APP|U根目录|退出1
sig(){
测试-s“$PID”和压井-1`cat$PID`
}
oldsig(){
测试-s$old\u pid和kill-$1`cat$old\u pid`
}
案件$诉讼
开始)
信号0&&echo>&2“已在运行”&退出0
su-c“$CMD”-
;;
(停止)
sig退出&退出0
echo>&2“未运行”
;;
(强制停止)
sig术语&退出0(&F)
echo>&2“未运行”
;;
重新启动(重新加载)
sig HUP和echo已重新加载确定和退出0(&E)
echo>&2“无法重新加载,改为启动“$CMD”
su-c“$CMD”-
;;
(升级)
如果sig USR2&&sleep 2&&sig 0&&oldsig退出
然后
n=$TIMEOUT
而test-s$old\u pid和test$n-ge 0
做
printf'.&&sleep 1&&n=$($n-1))
完成
回声
如果测试$n-lt 0和测试-s$old\u pid
然后
echo>&2“$old\u pid在$TIMEOUT秒后仍然存在”
出口1
fi
出口0
fi
echo>&2“无法升级,改为启动“$CMD”
su-c“$CMD”-
;;
重新打开日志)
sig USR1
;;
*)
echo>&2“用法:$0”
出口1
;;
以撒

service unicorn_<APP NAME> start
service unicorn\uuuu启动
应用程序引导没有问题,浏览器解决所有请求 但是当我试图停止服务时

service unicorn_<APP NAME> stop
service unicorn\uuuu停止
我从文件“未运行”中得到错误,我尝试重新启动

service  unicorn_<APP_NAME> restart
service unicorn\uuu重新启动
我得到一个错误:

Couldn't reload, starting 'cd <APP_NAME>; <APP_NAME>/bin/unicorn -D -c <APP_NAME>/config/unicorn.rb -E production' instead
master failed to start, check stderr log for details
无法重新加载,正在启动“cd”/bin/unicorn-D-c/config/unicorn.rb-E production
主机启动失败,请查看stderr日志以了解详细信息
我认为这是因为它无法跟踪工作进程的pid,并且检查/tmp/pid area unicorn.pid不存在,如果我创建一个空白的,则没有任何区别


感谢您的帮助。

您不必将第8行中的
替换为您应用程序的实际安装目录吗?我在那里有一个正确的目录,刚刚编辑好发布在这里。我不知道unicorn,但是文档中没有提到编写了pid文件。然而,这似乎是事实。所以也许你必须使用unicorn_rails而不是unicorn?