2016-04-27 2 views
1

У меня есть следующие настройки в моем deploy.rbSSH экспедитор с Capistrano-не работает при развертывании Rails приложения

set :application, 'sample_app' 
set :repo_url, '[email protected]:/home/user/railsapps/sample_app' 
set :deploy_to, '/var/www/sample_app' 
set :user, "user" 
set :ssh_options, { :forward_agent => true } 

и мой развернуть/production.rb файл:

set :stage, :production 
server '123.45.67.200', user: 'user', roles: %w{app db web} 

Я получаю следующее сообщение об ошибке при запуске крышки производства развернуть: проверить

DEBUG [] ssh: connect to host 123.45.67.100 port 22: Connection timed out 
DEBUG [] fatal: Could not read from remote repository. 
Please make sure you have the correct access rights and the repository exists. 
(Backtrace restricted to imported tasks) 
cap aborted! 
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: git exit status: 128 
git stdout: Nothing written 
git stderr: ssh: connect to host 123.45.67.200 port 22: Connection timed out 
fatal: Could not read from remote repository. 
Please make sure you have the correct access rights and the repository exists. 

в одной из линий, я вижу, что он пытается получить доступ к хранилищу, как [email protected], который является пользователем развертывания сервера производства:

INFO [] Running /usr/bin/env git ls-remote --heads [email protected]:/home/user/railsapps/sample_app as [email protected] 

Не должно быть о том, что это соединение в качестве локального пользователя с локальными ключами SSH? Запускается ли Capistrano на производственный сервер, а затем вытаскивает код из репозитория? Если да, то есть ли способ заставить его вытолкнуть код из репозитория на производственный сервер?

+0

Capistrano работает, вытягивая обновленный код. Он войдет на сервер производства, а затем оттуда возьмет git. Если вы переадресовываете ключи, ваш локальный ключ будет доступен, но вы можете клонировать репо в качестве пользователя развертывания –

ответ

0

Capistrano запустится на сервер, а затем с сервера вытащит код из вашего VCS.

Есть обычно два способа аутентификации этого:

  1. пересылка SSH-агент, который предоставит удаленный доступ к сеансовый ключ разработчика, или
  2. ключи Deploy, которые дают ключ доступа пользователя сервера к ваш код.

Вторая половина этой странице документации описывается способ Git работает с Capistrano: http://capistranorb.com/documentation/getting-started/cold-start/

от ошибок, которые вы разместили, вы, вероятно, нужно настроить один или другой из представленных выше опций.

0

Похоже, что ваш Git-адрес недействителен. Вы можете проверить это, подключившись к удаленной системе ([email protected]) и попытайтесь ударить по удаленному Git repo простым git ls-remote --heads, который докажет возможность подключения.

git ls-remote --heads [email protected]:/home/user/railsapps/sample_app 

Я подозреваю, что вам может понадобиться .git прилагается к вашему URL ([email protected]:/home/user/railsapps/sample_app.git), но это действительно зависит от того, как у вас есть удаленный репо настройки.

Git использует SSH для подключения, но явно не показывает это на выходе Capistrano. Все, что вы увидите, - это явные команды git.

В качестве альтернативы, если вы ожидаете использовать переадресацию агента, возможно, возникла проблема с вашей конфигурацией пересылки ssh, локальной или удаленной. Вы можете проверить это, проверив свой локальный компьютер, затем подключившись к удаленному компьютеру и узнав, была ли ваша личность отправлена.Вы бы сделать это так:

local-host$ ssh-add -l 
local-host$ ssh [email protected] 
remote-host$ ssh-add -l 

Если вы видите выход как:

Error connecting to agent: No such file or directory 

или:

Could not open a connection to your authentication agent. 

или:

The agent has no identities. 

Затем вам нужно сортировать чтобы этот вопрос до того, как Капистрано будет работать должным образом.

Вы можете написать «Using ssh-agent with ssh», чтобы помочь с конфигурацией SSH.

Смежные вопросы