在cap部署期间:冷 – 命令找不到/etc/init.d/unicorn

我非常接近让我的第一个rails应用程序在Linode VPS上运行,但是在cap部署结束时仍然有一个奇怪的错误信息:cold。 我一直在使用railscasts 335来将我的Rails应用程序部署到使用nginx,Unicorn,PostgreSQL,rbenv和更多的VPS(不幸的是我从Windows机器上)。 我在Linode Ubuntu 10.04 LTS Profile上托pipe。 在部署结束时,我收到以下错误消息:

* ←[32m2013-04-24 13:08:13 executing `deploy:start'←[0m * ←[33mexecuting "sudo -p 'sudo password: ' /etc/init.d/unicorn_wheretoski start"←[0m servers: ["xxx.xx.xxx.242"] [xxx.xx.xxx.242] executing command ** [out :: xxx.xx.xxx.242] ** [out :: xxx.xx.xxx.242] sudo: /etc/init.d/unicorn_wheretoski: command not found ** [out :: xxx.xx.xxx.242] ←[2;37mcommand finished in 309ms←[0m failed: "env PATH=$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH sh -c 'sudo -p '\\'' sudo password: '\\'' /etc/init.d/unicorn_wheretoski start'" on xxx.xx.xxx.242 

当我去服务器,它find该文件

 :~/apps/wheretoski/current$ ls /etc/init.d/unicorn_wheretoski /etc/init.d/unicorn_wheretoski 

从deploy.rb

 namespace :deploy do %w[start stop restart].each do |command| desc "#{command} unicorn server" task command, roles: :app, except: {no_release: true} do sudo "/etc/init.d/unicorn_#{application} #{command}" end end ...... 

并从unicorn_init.sh

 #!/bin/sh set -e # Feel free to change any of the following variables for your app: TIMEOUT=${TIMEOUT-60} APP_ROOT=/home/deployer/apps/wheretoski/current PID=$APP_ROOT/tmp/pids/unicorn.pid CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production" AS_USER=deployer set -u OLD_PIN="$PID.oldbin" sig () { test -s "$PID" && kill -$1 `cat $PID` } oldsig () { test -s $OLD_PIN && kill -$1 `cat $OLD_PIN` } run () { if [ "$(id -un)" = "$AS_USER" ]; then eval $1 else su -c "$1" - $AS_USER fi } case "$1" in start) sig 0 && echo >&2 "Already running" && exit 0 run "$CMD" ;; 

然后我转到VPS并尝试执行各种命令,执行以下命令时出现错误:

 deployer@li543-242:~/apps/wheretoski/current$ bundle exec unicorn -D -c $/home/apps/wheretoski/current/config/unicorn.rb -E production /home/deployer/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/rubygems_integration.rb:214:in `block in replace_gem': unicorn is not part of the bundle. Add it to Gemfile. (Gem::LoadError) from /home/deployer/.rbenv/versions/1.9.3-p125/bin/unicorn:22:in `<main>' 

这是我得到的VPS的echo $ PATH:/home/deployer/.rbenv/shims:/home/deployer/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/ sbin目录:在/ usr / bin中:/ sbin目录:/ bin中:在/ usr /游戏:/home/deployer/.rbenv/versions/1.9.3-p125/bin

我已经尝试了制作组下的麒麟gem和作为主要gem的一部分,都产生了这个相同的错误信息。 当我在服务器上的当前文件夹中打开Gemfile.lock时,Unicorn只出现在依赖项下,而不是在规范下。

谢谢你的帮助!!

好的,这里有几个问题。

1 – 我的本地计算机和服务器上有不同版本的捆绑软件。

2 – 在Windows机器上进行开发。 我必须把麒麟宝石放在我的gemfile中的生产组下,无论如何gemfile.lock没有成功创建。 有一个朋友与一个mac拉我的代码,移动独角兽到gemfile的主要部分,并捆绑安装它。 这创建了一个良好的Gemfile.lock,现在在服务器上使用。

不知道这是否会有助于别人,相当奇怪的错误。