【问题标题】:Capistrano failed - no current directory / bundle: not found / rolling backCapistrano 失败 - 没有当前目录/捆绑:未找到/回滚
【发布时间】:2012-03-31 02:39:46
【问题描述】:

最近我将我的一个 Rails 应用程序移到了一个新配置的 EC2 ubuntu 实例。运行与旧服务器相同的 ruby​​ 版本,带有乘客的 apache。但是我仍然无法使用Capistrano 将应用程序部署到服务器。我仍然不知道该错误,所以我将我的部署日志粘贴在这里。这也是我的Capistrano recipe。感谢有人可以在这里找到问题。

$ cap deploy:setup
    triggering start callbacks for `deploy:setup'
  * executing `uploads:register_dirs'
  * executing `deploy:setup'
  * executing "mkdir -p /home/ubuntu/webapps/myapp-name /home/ubuntu/webapps/myapp-name/releases /home/ubuntu/webapps/myapp-name/shared /home/ubuntu/webapps/myapp-name/shared/system /home/ubuntu/webapps/myapp-name/shared/log /home/ubuntu/webapps/myapp-name/shared/pids /home/ubuntu/webapps/myapp-name/shared/uploads"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'mkdir -p /home/ubuntu/webapps/myapp-name /home/ubuntu/webapps/myapp-name/releases /home/ubuntu/webapps/myapp-name/shared /home/ubuntu/webapps/myapp-name/shared/system /home/ubuntu/webapps/myapp-name/shared/log /home/ubuntu/webapps/myapp-name/shared/pids /home/ubuntu/webapps/myapp-name/shared/uploads'
    command finished in 696ms
  * executing "chmod g+w /home/ubuntu/webapps/myapp-name /home/ubuntu/webapps/myapp-name/releases /home/ubuntu/webapps/myapp-name/shared /home/ubuntu/webapps/myapp-name/shared/system /home/ubuntu/webapps/myapp-name/shared/log /home/ubuntu/webapps/myapp-name/shared/pids /home/ubuntu/webapps/myapp-name/shared/uploads"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'chmod g+w /home/ubuntu/webapps/myapp-name /home/ubuntu/webapps/myapp-name/releases /home/ubuntu/webapps/myapp-name/shared /home/ubuntu/webapps/myapp-name/shared/system /home/ubuntu/webapps/myapp-name/shared/log /home/ubuntu/webapps/myapp-name/shared/pids /home/ubuntu/webapps/myapp-name/shared/uploads'
    command finished in 205ms

由于某种原因,上面没有创建current 目录,但我可以看到releasesshared 目录。另外,在共享目录中,我还有另一个名为 uploads

的目录
$ cap deploy
    triggering start callbacks for `deploy'
  * executing `uploads:register_dirs'
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote . master"
    command finished in 5ms
  * getting (via checkout) revision a7e86283b743de666354349c56c66f80a35a6997 to /tmp/20120314153001
    executing locally: git clone -q . /tmp/20120314153001 && cd /tmp/20120314153001 && git checkout -q -b deploy a7e86283b743de666354349c56c66f80a35a6997
    command finished in 1879ms
    compressing /tmp/20120314153001 to /tmp/20120314153001.tar.gz
    executing locally: tar czf 20120314153001.tar.gz 20120314153001
    command finished in 4323ms
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
 ** sftp upload /tmp/20120314153001.tar.gz -> /tmp/20120314153001.tar.gz
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sftp upload /tmp/20120314153001.tar.gz -> /tmp/20120314153001.tar.gz
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sftp upload /tmp/20120314153001.tar.gz -> /tmp/20120314153001.tar.gz done
  * sftp upload complete
  * executing "cd /home/ubuntu/webapps/myapp-name/releases && tar xzf /tmp/20120314153001.tar.gz && rm /tmp/20120314153001.tar.gz"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'cd /home/ubuntu/webapps/myapp-name/releases && tar xzf /tmp/20120314153001.tar.gz && rm /tmp/20120314153001.tar.gz'
    command finished in 2353ms
  * executing `deploy:finalize_update'
  * executing "chmod -R g+w /home/ubuntu/webapps/myapp-name/releases/20120314153001"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'chmod -R g+w /home/ubuntu/webapps/myapp-name/releases/20120314153001'
    command finished in 294ms
  * executing "rm -rf /home/ubuntu/webapps/myapp-name/releases/20120314153001/log /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/system /home/ubuntu/webapps/myapp-name/releases/20120314153001/tmp/pids &&\\\n      mkdir -p /home/ubuntu/webapps/myapp-name/releases/20120314153001/public &&\\\n      mkdir -p /home/ubuntu/webapps/myapp-name/releases/20120314153001/tmp"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'rm -rf /home/ubuntu/webapps/myapp-name/releases/20120314153001/log /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/system /home/ubuntu/webapps/myapp-name/releases/20120314153001/tmp/pids &&\
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] mkdir -p /home/ubuntu/webapps/myapp-name/releases/20120314153001/public &&\
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] mkdir -p /home/ubuntu/webapps/myapp-name/releases/20120314153001/tmp'
    command finished in 211ms
  * executing "ln -s /home/ubuntu/webapps/myapp-name/shared/system /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/system"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'ln -s /home/ubuntu/webapps/myapp-name/shared/system /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/system'
    command finished in 193ms
  * executing "ln -s /home/ubuntu/webapps/myapp-name/shared/log /home/ubuntu/webapps/myapp-name/releases/20120314153001/log"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'ln -s /home/ubuntu/webapps/myapp-name/shared/log /home/ubuntu/webapps/myapp-name/releases/20120314153001/log'
    command finished in 189ms
  * executing "ln -s /home/ubuntu/webapps/myapp-name/shared/pids /home/ubuntu/webapps/myapp-name/releases/20120314153001/tmp/pids"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'ln -s /home/ubuntu/webapps/myapp-name/shared/pids /home/ubuntu/webapps/myapp-name/releases/20120314153001/tmp/pids'
    command finished in 191ms
  * executing "ln -s /home/ubuntu/webapps/myapp-name/shared/uploads /home/ubuntu/webapps/myapp-name/releases/20120314153001/uploads"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'ln -s /home/ubuntu/webapps/myapp-name/shared/uploads /home/ubuntu/webapps/myapp-name/releases/20120314153001/uploads'
    command finished in 191ms
  * executing "find /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/images /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/stylesheets /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/javascripts -exec touch -t 201203141535.01 {} ';'; true"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] env TZ=UTC sh -c 'find /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/images /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/stylesheets /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/javascripts -exec touch -t 201203141535.01 {} '\'';'\''; true'
    command finished in 2057ms
    triggering after callbacks for `deploy:finalize_update'
  * executing `uploads:symlink'
  * executing "rm -rf /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/uploads"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'rm -rf /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/uploads'
    command finished in 192ms
  * executing "ln -nfs /home/ubuntu/webapps/myapp-name/shared/uploads /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/uploads"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'ln -nfs /home/ubuntu/webapps/myapp-name/shared/uploads /home/ubuntu/webapps/myapp-name/releases/20120314153001/public/uploads'
    command finished in 204ms
  * executing `bundle:install'
  * executing "ls -x /home/ubuntu/webapps/myapp-name/releases"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'ls -x /home/ubuntu/webapps/myapp-name/releases'
    command finished in 188ms
  * executing "cd /home/ubuntu/webapps/myapp-name/releases/20120314153001 && bundle install --gemfile /home/ubuntu/webapps/myapp-name/releases/20120314153001/Gemfile --path /home/ubuntu/webapps/myapp-name/shared/bundle --deployment --quiet --without development test"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'cd /home/ubuntu/webapps/myapp-name/releases/20120314153001 && bundle install --gemfile /home/ubuntu/webapps/myapp-name/releases/20120314153001/Gemfile --path /home/ubuntu/webapps/myapp-name/shared/bundle --deployment --quiet --without development test'
*** [err :: ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh:
*** [err :: ec2-184-73-xx-xxx.compute-1.amazonaws.com] bundle: not found
*** [err :: ec2-184-73-xx-xxx.compute-1.amazonaws.com] 
    command finished in 189ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/ubuntu/webapps/myapp-name/releases/20120314153001; true"
    servers: ["ec2-184-73-xx-xxx.compute-1.amazonaws.com"]
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] executing command
    [ec2-184-73-xx-xxx.compute-1.amazonaws.com] sh -c 'rm -rf /home/ubuntu/webapps/myapp-name/releases/20120314153001; true'
    command finished in 435ms
failed: "sh -c 'cd /home/ubuntu/webapps/myapp-name/releases/20120314153001 && bundle install --gemfile /home/ubuntu/webapps/myapp-name/releases/20120314153001/Gemfile --path /home/ubuntu/webapps/myapp-name/shared/bundle --deployment --quiet --without development test'" on ec2-184-73-xx-xxx.compute-1.amazonaws.com

【问题讨论】:

    标签: ruby-on-rails ubuntu amazon-ec2 passenger capistrano


    【解决方案1】:

    简而言之,似乎在服务器上找不到 bundle 命令。

    您可以通过 SSH 以“ubuntu”(部署文件中指定的用户)身份将其安装到服务器并尝试运行bundle。如果您收到 command not found 错误,则可能未安装 bundler 或 'ubuntu' 用户没有权限。

    如果上述命令确实有效,那么当 cap 尝试执行其命令时,您的环境变量可能不会被加载。我必须在部署脚本中指定以下环境变量:

    default_environment['PATH'] = '/usr/local/lib/ruby/gems/1.9.1/bin:$PATH'
    default_environment['GEM_PATH']= '/usr/local/lib/ruby/gems/1.9.1'
    

    显然,调整路径以适合您的服务器配置。

    我希望这会有所帮助!

    【讨论】:

    • 谢谢你——成功了。基本上bundle 命令工作正常。问题在于环境配置,正如您提到的,当 capistrano 执行其命令时它没有加载。我已经用解决方案更新了要点。非常感谢您的帮助。 - gist.github.com/2037413
    • 如果你不知道你的路径,>>> printenv
    • printenv 在哪里?这些行应该放在 require 'bundler/capistrano' 之前?
    猜你喜欢
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多