2012-05-29 246 views
1

我最近不得不對某個應用程序進行一些更新,而這些應用程序大約一年沒有涉及。當嘗試用Capistrano的(通過Github上)部署,我得到這個錯誤:Capistrano部署錯誤

[deploy:update_code] exception while rolling back: IOError, closed stream 

全部記錄在這裏的錯誤:https://gist.github.com/2829751

我重新安裝了SSH Github上安全恐慌後,我的服務器的SSH密鑰。遠程服務器上的任何內容都不應該改變,並且之前部署工作正常。我本地系統唯一重要的變化就是轉向RVM。

任何想法是什麼導致了錯誤?

這是我的deploy.rb文件,如果這能幫助:

default_run_options[:pty] = true 

set :domain, 'xxx.xxx.xxx' 
set :repository, "XXX MY REPO XXX" 
set :branch, 'master' 
set :password, 'XXXXXXX' 

set :deploy_to, "/var/www/#{domain}" 

set :scm, :git 
set :repository_cache, "git_cache" 
set :deploy_via, :remote_cache 

ssh_options[:paranoid] = false 

set :user, "XXX" 
set :runner, user 
set :use_sudo, true 
set :rails_env, 'production' 

role :app, domain # multiple domains can be added here for parallel deployment (i.e. test_app) 
role :web, domain 
role :db, domain, :primary => true 

namespace :deploy do 
    task :start, :roles => :app do 
    run "touch #{release_path}/tmp/restart.txt" 
    end 

    task :stop, :roles => :app do 
    # Do nothing. 
    end 

    desc "Restart Application" 
    task :restart, :roles => :app do 
    run "touch #{release_path}/tmp/restart.txt" 
    end 
end 

deploy.task :cold do 
    deploy.update 
    deploy.create_db 
    deploy.migrate 
    deploy.restart # Change to start if we're using mongrels 
end 

after "deploy:update_code", :update_config 
after "deploy:restart", "delayed_job:restart" 
after "deploy", "deploy:cleanup" 

#links config files from shared to the release path and mongrel path after deployment 
desc "Create all symlinks and files needed for app activation ofter deployment" 
task :update_config, :roles => :web do 
    run "ln -s -f /var/www/#{domain}/shared/database.yml #{release_path}/config/database.yml" 
    run "ln -s -f /var/www/#{domain}/shared/app.yml #{release_path}/config/app.yml" 
    run "ln -s -f /var/www/#{domain}/shared/cache #{release_path}/public/cache" 
    run "ln -s -f /var/www/#{domain}/shared/survey_cache #{release_path}/public/surveys" 
    run "ln -s -f /var/www/#{domain}/shared/surveys #{release_path}/surveys" 
end 

desc "changes ownership to cbdsm:git" 
task :update_permissions, :roles => :web do 
    sudo "chown -R #{user}:git /var/www/#{domain}" 
end 

namespace :delayed_job do 
    desc "Start the delayed_job process" 
    task :start, :roles => :app do 
     run "cd #{current_path} && RAILS_ENV=#{rails_env} script/delayed_job -n 3 start" 
    end 

    desc "Stop the delayed_job process" 
    task :stop, :roles => :app do 
     run "cd #{current_path} && RAILS_ENV=#{rails_env} script/delayed_job stop" 
    end 

    desc "Restart the delayed_job process" 
    task :restart, :roles => :app do 
     delayed_job.stop 
     delayed_job.start 
    end 
end 

UPDATE:這似乎是一個問題set :use_sudo, true。刪除該行和任何需要sudo的命令似乎可以解決問題。我還沒有完全清楚什麼改變了 - 這使得這條線有問題。它以前工作得很好。

此外,我刪除了default_run_options[:pty] = true行。

回答

1

張貼以上:

這似乎是一個問題集:use_sudo,真實。刪除該行和任何需要sudo的命令似乎可以解決問題。我還沒有完全清楚什麼改變了 - 這使得這條線有問題。它以前工作得很好。

此外,我刪除了default_run_options [:pty] = true行。

+0

謝謝你,我正在運行Webistrano(Capistrano w/Web UI),它的默認模板包括'''default_run_options [:pty] = true'''。 –

0

在這些情況下發布/config/deploy.rb將有助於...

順便說一句,你怎麼設置:deploy_via設置?嘗試改變這:remote_cache(從:copy):

set :deploy_via, :remote_cache 

,看看會發生什麼。

+0

謝謝 - 這就是我的設置。我編輯了該文章以包含部署文件。 – ideaoforder