ruby-on-rails - 无法使用 capistrano 从 bitbucket 部署到 aws

标签 ruby-on-rails ruby amazon-web-services ssh amazon-ec2

我尝试使用本地计算机上的 Capistrano 将 Ruby on Rails 应用程序从 bitbucket 上的存储库自动部署到 AWS EC2 实例。我尝试了 ssh、密码、无密码、转发 ssh key 、使用唯一的 ssh key 而不进行转发。每次我面对这个 ssh 跟踪set :ssh_options, { verbose: :debug } :debug

D, [2016-01-15T21:08:45.830590 #8129] DEBUG -- socket[2aefc98b29bc]: queueing packet nr 52 type 97 len 28 I, [2016-01-15T21:08:45.830677 #8129] INFO -- net.ssh.connection.session[2aefc9c83b04]: ec2-23-289-88-231.eu-west-1.compute.amazonaws.com delete channel 2 which closed locally and remotely INFO [b3dd32b6] Finished in 0.255 seconds with exit status 0 (successful). cap aborted! Errno::ENETUNREACH: Network is unreachable - connect(2) /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/2.0.0/socket.rb:65:inconnect' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/2.0.0/socket.rb:65:in connect_internal' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/2.0.0/socket.rb:140:inconnect' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/2.0.0/socket.rb:343:in block in tcp' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/2.0.0/socket.rb:232:ineach' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/2.0.0/socket.rb:232:in foreach' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/2.0.0/socket.rb:333:intcp' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/net-ssh-3.0.2/lib/net/ssh/transport/session.rb:70:in initialize' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/net-ssh-3.0.2/lib/net/ssh.rb:225:innew' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/net-ssh-3.0.2/lib/net/ssh.rb:225:in start' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/connection_pool.rb:95:incall' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/connection_pool.rb:95:in create_new_entry' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/connection_pool.rb:38:incheckout' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/netssh.rb:134:in with_ssh' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/netssh.rb:87:inexecute_command' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/abstract.rb:121:in block in create_command_and_execute' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/abstract.rb:121:intap' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/abstract.rb:121:in create_command_and_execute' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/abstract.rb:53:inexecute' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/capistrano-3.2.1/lib/capistrano/tasks/git.rake:17:in block (3 levels) in <top (required)>' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/abstract.rb:15:ininstance_exec' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/backends/abstract.rb:15:in run' /home/al/.rbenv/versions/2.0.0-p647/lib/ruby/gems/2.0.0/gems/sshkit-1.8.1/lib/sshkit/runners/parallel.rb:13:inblock (2 levels) in execute' Tasks: TOP => git:check => git:wrapper The deploy has failed with an error: # ** Invoke deploy:failed (first_time) ** Execute deploy:failed al@al-machine:/media/al/E02EF2032EF1D290/projects/project$ cap aborted! ` ```



请建议尝试什么

这是 deploy.rb
`
lock '3.2.1'
set :application, 'myapp'
set :repo_url, 'git@bitbucket.org:user/application.git'
set :branch, 'staging'
set :ssh_options, {
  verbose: :debug
}
 set :deploy_to, 'myfolder'
 set :scm, :git
 set :pty, true
 set :keep_releases, 5
set :use_sudo, true
set :rails_env, 'develop'
set :deploy_via, :copy
set :stages, ["staging", "production"]
set :default_stage, 'staging'
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 :publishing, :restart
  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
`

这是 staging.rb
`
role :app, %w{deploy@example.com}
role :web, %w{deploy@example.com}
role :db,  %w{deploy@example.com}
set :deploy_to, "/myfolder"
 server 'ec2-my-ip.eu-west-1.compute.amazonaws.com',
   user: 'ec2-user',
   port: '22',
   roles: %w{web app db},
   :primary => true,
   ssh_options: {
    user: 'ec2-user', # overrides user setting above
     keys: %w(/home/local_machine_user/.ssh/aws_ssh_key_pair.pem),
     forward_agent: false,
     auth_methods: %w(publickey password),
     password: 'please use keys'
   }
`

最佳答案

这是网络问题:

Errno::ENETUNREACH: Network is unreachable - connect(2)

检查您的安全组并确保您允许实例连接到端口 22 上的外部源。(您也可以使用“ssh -Tv git@bitbucket.org”从该实例测试它。)

关于ruby-on-rails - 无法使用 capistrano 从 bitbucket 部署到 aws,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818400/

相关文章:

ruby-on-rails - 重建数据库启用扩展 pg_stat_statements 行在模式文件中被删除

ruby-on-rails - 在实时数据库上运行迁移是否安全?

ruby-on-rails - 在 jupyter notebook 中无法使用 iruby 命令

amazon-web-services - ELB 健康检查失败 AWS

javascript - ReactJS 消息服务

amazon-web-services - 使用cloudformation,我想给默认安全组和SSH安全组作为实例的安全组

ruby-on-rails - 无法在同一 VPC 上将 aws redis 与 ec2 连接

ruby-on-rails - Rails - 如何在 View 中插入/渲染文件

ruby - 如何为突出显示 Ruby 代码的 CodeRay 语法选择不同的主题/样式?

ruby-on-rails - Ruby on Rails - 仅显示当前日期