2013-03-03 176 views
0

生产服务器:Ubuntu的12.04,阿帕奇,客运,RVM,红宝石2,轨道4,5和PostgreSQLCapistrano的帽部署:寒冷的错误

我越来越帽部署后,此错误:冷(我改变了用户名和IP) :

* 2013-03-04 12:17:56 executing `deploy:cold' 
    * 2013-03-04 12:17:56 executing `deploy:update' 
** transaction: start 
    * 2013-03-04 12:17:56 executing `deploy:update_code' 
    updating the cached checkout on all servers 
    executing locally: "git ls-remote [email protected]:user/captest.git master" 
    command finished in 4655ms 
    * executing "if [ -d /home/user/apps/captest/shared/cached-copy ]; then cd /home/user/apps/captest/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 0ad1ab0c9e73b41959981a1415f71a42e80c0443 && git clean -q -d -x -f; else git clone -q [email protected]:user/captest.git /home/user/apps/captest/shared/cached-copy && cd /home/user/apps/captest/shared/cached-copy && git checkout -q -b deploy 0ad1ab0c9e73b41959981a1415f71a42e80c0443; fi" 
    servers: ["192.33.33.333"] 
    [192.33.333.333] executing command 
    command finished in 5870ms 
    copying the cached version to /home/user/apps/captest/releases/20130304111807 
    * executing "cp -RPp /home/user/apps/captest/shared/cached-copy /home/user/apps/captest/releases/20130304111807 && (echo 0ad1ab0c9e73b41959981a1415f71a42e80c0443 > /home/user/apps/captest/releases/20130304111807/REVISION)" 
    servers: ["192.33.333.333"] 
    [192.33.333.333] executing command 
    command finished in 122ms 
    * 2013-03-04 12:18:07 executing `deploy:finalize_update' 
    triggering before callbacks for `deploy:finalize_update' 
    * 2013-03-04 12:18:07 executing `deploy:assets:symlink' 
    * executing "rm -rf /home/user/apps/captest/releases/20130304111807/public/assets && mkdir -p /home/user/apps/captest/releases/20130304111807/public && mkdir -p /home/user/apps/captest/shared/assets && ln -s /home/user/apps/captest/shared/assets /home/user/apps/captest/releases/20130304111807/public/assets" 
    servers: ["192.33.333.333"] 
    ["192.33.333.333"] executing command 
    command finished in 134ms 
    * 2013-03-04 12:18:07 executing `bundle:install' 
    * executing "cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test" 
    servers: ["192.33.333.333"] 
    [192.33.333.333] executing command 
** [out :: 192.33.333.333] sh: 1: 
** [out :: 192.33.333.333] bundle: not found 
** [out :: 192.33.333.333] 
    command finished in 110ms 
*** [deploy:update_code] rolling back 
    * executing "rm -rf /home/user/apps/captest/releases/20130304111807; true" 
    servers: ["192.33.333.333"] 
    [192.33.333.333] executing command 
    command finished in 118ms 
failed: "sh -c 'cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test'" on 192.33.333.333 

我基本上沿袭了railscasts情节 “部署到VPS” 的指示。 这是我deploy.rb文件:

require "bundler/capistrano" 


server "192.33.333.333", :web, :app, :db, primary: true 

set :application, "captest" 
set :user, "user" 
set :deploy_to, "/home/#{user}/apps/#{application}" 
set :deploy_via, :remote_cache 
set :use_sudo, false 

set :scm, "git" 
set :repository, "[email protected]:user/#{application}.git" 
set :branch, "master" 

default_run_options[:pty] = true 
ssh_options[:forward_agent] = true 

after "deploy", "deploy:cleanup" # keep only the last 5 releases 

namespace :deploy do 
    task :start do; end 
    task :stop do; end 
    task :restart, roles: :app, except: {no_release: true} do 
    run "touch #{deploy_to}/current/tmp/restart.txt" 
    end 

    task :setup_config, roles: :app do 
    sudo "ln -nfs #{current_path}/config/apache.conf /etc/apache2/sites-available/#{application}" 
    run "mkdir -p #{shared_path}/config" 
    put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml" 
    puts "Now edit the config files in #{shared_path}." 
    end 
    after "deploy:setup", "deploy:setup_config" 
end 

我试图束直接从服务器安装,但不知道在哪里,因为我很困惑的应用程序结构。还试过'需要rvm/capistrano',但也会出错。

+0

请提供详细的日志。你所说的只是'它失败',没有更多:[ – 2013-03-03 21:53:59

+0

Bundle is not found – crispychicken 2013-03-03 22:49:06

+0

是的,肯定需要提供更多的日志。请向我们展示此命令输出的所有内容 – 2013-03-04 00:06:20

回答

0

你仍然没有看到真正的错误是什么。

如果-v(用于详细)在帽上部署:冷命令不会告诉你真正的问题,那么ssh登录到服务器并运行命令:cd /home/user/apps/captest/releases/20130304111807 && bundle install --gemfile /home/user/apps/captest/releases/20130304111807/Gemfile --path /home/user/apps/captest/shared/bundle --deployment --quiet --without development test

这听起来像你的红宝石ENV可能不在服务器上正确设置。

编辑:实际上,如果它被删除可能无法正常工作。我遇到了类似的问题,我通过将项目手动克隆到生产服务器并运行软件包安装来调试任何问题来解决此问题。

+0

与-v我得到相同的错误:找不到捆绑包。如果我直接在服务器上运行完整的命令,我会得到:没有找到这样的文件或目录 – crispychicken 2013-03-05 13:44:42

+0

尝试'chown -R my_path/apps/my_app'。您可能没有权限(例如,文件夹的内容可能由root拥有)。拆分命令并自行运行,直到遇到与capistrano相同的问题。 – Bijan 2013-03-05 15:50:00

0

您需要在目标服务器上安装捆绑软件。

gem install bundler 

它通常是您需要以这种方式安装的唯一宝石,因为它无法自行安装。

这个要点是不完全适合您的需求,但我如何去自举一个Ruby 2.0的Ubuntu服务器,并且可能有点帮助:https://gist.github.com/cmaitchison/4083459

+0

没有工作,但谢谢 – crispychicken 2013-03-05 13:35:57

0

我遇到了同样的问题,并确定解决方案。

在您的服务器上,卸载Bundler的所有版本。系统会提示您删除可执行文件。选择是。然后gem install bundler应该安装版本1.3.2或更高版本。

在您的Gemfile中,请确保来源是https而不是httpsource 'https://rubygems.org'

引用:https://github.com/carlhuda/bundler/issues/2378#issuecomment-14714639