0

Я пытаюсь оптимизировать свое приложение. Я хотел бы развернуть мое приложение rails на разных машинах. К сожалению, я не могу понять, как это сделать.Rails capistrano развертывание на несколько серверов

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) 

Это моя конфигурация. У меня есть два сервера единорога и один сервер db. Когда я использую cap: deploy: cold, он запрашивает у меня пароль, но я не могу понять пароль, на который я должен входить? Он не работает со всеми паролями сервера. Я получаю

(Net::SSH::AuthenticationFailed: root) 

Может ли кто-нибудь объяснить мне, как моя конфигурация будет иметь возможность развертывать на всех машинах?

+0

Вы действительно развертываете как корень? Пожалуйста, пожалуйста, передумайте. Запускайте все приложения как привилегированные пользователи. – Doon

+0

Я могу войти в систему с помощью ssh root @ ip. Я вижу, что у моего пользователя есть/home/debian, но даже если я изменю его на «debian», он тоже не работает. Также я не могу войти в систему с ssh debian @ ip. – user1107922

+0

какая версия capistrano вы используете – Doon

ответ

0

Это должно сработать, но вы должны настроить свои ssh-соединения, поэтому вам не нужно вводить пароль, используя ssh-ключи.

+0

Можете ли вы сказать, что является правильным синтаксисом для установки ключей ssh ​​для каждого ip? – user1107922

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, 
} 
+0

Спасибо за ваш ответ. Итак, «footbar» должен быть «debian» в моем случае, не так ли? – user1107922

+0

хорошо, где вы развертываете в/home/debian/apps/{application}? в основном то, что вы делаете, задает все общие вещи в глобальных конфигурациях, а затем использует переопределения на сервер для внесения изменений на каждом сервере, если это необходимо (IE с использованием разных ключей или разных параметров ssh). пользовательская опция там может быть debian, если вы входите на сервер как debian @ ip. Или вы пытаетесь развернуть приложение с правами root/home/debian, вам, вероятно, понадобится использовать другой пользователь/имя – Doon

+0

Я запутался, потому что я вхожу в систему с помощью root @ ip, но мой каталог - это/home/debian/apps/{application } Так что deploy_to должно быть одинаковым с debian для всех серверов, но переопределенный пользователь в ip1 должен быть root или debian? – user1107922