2014-01-15 49 views
1

我正在努力将capistrano v2升级到v3 5天。我试图从本地机器部署到ec2实例开发环境。我无法继续前进。我的痕迹在这里capistrano版本3升级困惑

$帽开发部署:检查

INFO [429e612c] Running /usr/bin/env mkdir -p /tmp/my_app_name/ on 70.22.320.14 
DEBUG [429e612c] Command: (RVM_BIN_PATH=~/.rvm/bin /usr/bin/env mkdir -p /tmp/my_app_name/) 
INFO [429e612c] Finished in 6.208 seconds with exit status 0 (successful). 
DEBUG Uploading /tmp/my_app_name/git-ssh.sh 0.0% 
INFO Uploading /tmp/my_app_name/git-ssh.sh 100.0% 
INFO [c3a41f2e] Running /usr/bin/env chmod +x /tmp/my_app_name/git-ssh.sh on 70.22.320.14 
DEBUG [c3a41f2e] Command: (RVM_BIN_PATH=~/.rvm/bin /usr/bin/env chmod +x /tmp/my_app_name/git-ssh.sh) 
INFO [c3a41f2e] Finished in 0.720 seconds with exit status 0 (successful). 
DEBUG [c5891dcc] Running /usr/bin/env git ls-remote [email protected]:example/webapp.git 
on 70.22.320.14 
DEBUG [c5891dcc] Command: (RVM_BIN_PATH=~/.rvm/bin GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/my_app_name/git-ssh.sh /usr/bin/env git ls-remote [email protected]:example/webapp.git 
DEBUG [c5891dcc] /usr/bin/env: 
DEBUG [c5891dcc] git 
DEBUG [c5891dcc] : No such file or directory 
DEBUG [c5891dcc]  
DEBUG [c5891dcc] Finished in 0.664 seconds with exit status 127 (failed). 

配置/ deploy.rb

set :application, 'my_app_name' 
set :repo_url, '.' 
set :branch, 'master' 
set :scm, :git 
set :deploy_to, "/home/ec2-user/capistrano-3/}" 
set :ssh_options, {:keys => ["#{ENV['HOME']}/.ssh/my_pem.pem"], :forward_agent =>true} 
set :keep_releases, 5 
set :rvm_type, :user 
set :rvm_ruby_version, '2.0.0-p353' 
set :default_env, { rvm_bin_path: '~/.rvm/bin' } 
set :whenever_command, "bundle exec whenever" 
set :git_shallow_clone, 1 
set :deploy_via, :copy 

set :log_level, :debug 
set :pty, true 
set :linked_files, %w{config/database.yml} 


SSHKit.config.command_map[:rake] = "bundle exec rake" 
SSHKit.config.command_map[:rails] = "bundle exec rails" 

namespace :deploy do 

    desc 'Restart application' 
    task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     # Your restart mechanism here, for example: 
     # execute :touch, release_path.join('tmp/restart.txt') 
    end 
    end 

    after :restart, :clear_cache do 
    on roles(:web), in: :groups, limit: 3, wait: 10 do 
     # Here we can do anything such as: 
     # within release_path do 
     # execute :rake, 'cache:clear' 
     # end 
    end 
    end 

    after :finishing, 'deploy:cleanup' 

end 

配置/部署/ development.rb

set :stage, :development 


role :app, %w{[email protected]} 
role :web, %w{[email protected]} 
role :db, %w{[email protected]} 
role :all, %w{[email protected]} 

server 'ec2-user[email protected]', user: 'ec2-user', roles: %w{web app} 

Capfile

require 'capistrano/setup' 
require 'capistrano/deploy' 
require 'capistrano/bundler' 
require 'capistrano/rails/assets' 
require 'capistrano/rails/migrations' 

Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } 

我的问题:

  1. 我的git的路径不被接受

  2. SSH密钥问题

Git和SSH密钥与Capistrano的工作2为同样的应用程序,我正在部署。升级到capistrano v3会带来更大的头疼。我可以连续做什么。请指导我正确的步骤

+1

无需''SSHKit.config.command_map':rake'和': rails','capistrano/bundler'负责。 –

+1

另外,只需要'server'和'role:app /:web /:db'中的一个。在这种情况下,我认为'服务器'覆盖特定的':app /:web /:db' –

回答

4

我花了一些时间与capistrano3挣扎,这里有一些提示,可能是他们可能是有用的:

1)官方手册capistranorb.com。有关于你应该连续做什么的提示。关于认证和授权的部分也很有帮助。有关于在工作站和服务器上配置ssh的一些提示。我遵循这个指南,它可以帮助我。尝试从头开始遵循本指南来构建您的deploy.rb。

也很有帮助指南:guide1guide2

2)这是我的Capfile。注意rvm1/capistrano3和capistrano3 /独角兽。非常有用的宝石。

require 'capistrano/setup' 

    require 'capistrano/deploy' 
    require 'capistrano3/unicorn' 
    require 'rvm1/capistrano3' 
    require 'capistrano/rvm' 
    require 'capistrano/bundler' 
    require 'capistrano/rails/assets' 
    require 'capistrano/rails/migrations' 

3)你可以试试下面的命令:

ssh [email protected] -v 

ssh [email protected] -v # from your EC2 server 

了解,当您试图连接到您的EC2服务器会发生什么。可能与pem key有关的问题?创建.pub项并尝试使用它。不要忘了将它添加到〜/ SSH/authorized_keys中

cat id_rsa_aws.pub | ssh [email protected] "cat >> 
/home/ubuntu/.ssh/authorized_keys" 

配置您的ssh-agent和别忘了在你的〜/添加。.bash_profile中是这样的:

eval $(ssh-agent) 
ssh-add ~/.ssh/id_rsa_deploy_github 
ssh-add ~/.ssh/id_rsa_digital_ocean 

如果您在使用SSH的问题,或许你应该看看这个ssh-guide

还可以看我的应用程序,在那里我使用capistrano3。可能你可以找到适合你的东西:#project

P.在没有安装一些VPS git的,所以它是最好检查:

[email protected]***.amazonaws.com$ which git 

如果没有找到:

[email protected]***.amazonaws.com$ sudo apt-get install git 
+1

我的远程服务器不包含git。所以我在我的遥控器中添加了git。现在我的问题解决了 – Sam

+0

谢谢接受你的答案 – Sam