Rails capistrano部署到多个服务器

时间:2014-12-17 12:32:05

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 capistrano

我正在尝试优化我的应用程序。我想将rails应用程序部署到不同的机器上。不幸的是我无法理解如何做到这一点。

role :web, "ip1","ip2"
role :app, "ip1, ip2"
role :db, "db_ip", primary: true
set :application, "Name"
set :user, "root"
set :port, 22
set :deploy_to, "/home/#{user}/apps/#{application}"
set :ssh_options, {:forward_agent => true}
ssh_options[:forward_agent] = true
ssh_options[:keys] = %w(~/.ssh/id_key)

这是我的配置。我有两个独角兽服务器和一个数据库服务器。当我使用cap:deploy:cold它要求我输入密码但是我无法理解我应该输入哪台机器的密码?它不适用于所有服务器的密码。我收到了

(Net::SSH::AuthenticationFailed: root)

有人可以解释一下我的配置应该如何部署到所有机器?

2 个答案:

答案 0 :(得分:0)

这应该可行,但您应该设置ssh连接,这样就不必使用ssh密钥输入密码。

答案 1 :(得分:0)

这适用于版本3,并在看到版本设置为2之前发布。

尝试设置这样的全局选项。

 set :ssh_options, {
   keys: %w(/home/your_user/.ssh/id_key),
   forward_agent: true,
  }

你的密钥叫做id_key(id_rsa更常见)

如果您需要按服务器执行此操作,则可以执行此操作。

server 'ip1', 
 user: 'root',
 roles: %w{web app},
 ssh_options: {
   user: 'foobar', # overrides user setting above
   keys: %w(/home/user_name/.ssh/id_rsa),
   forward_agent: false,
 }