Проблемы с SSH при развертывании с Capistrano - PullRequest
5 голосов
/ 23 февраля 2012

При попытке развернуть приложение rails на сервере друга я получаю ошибки прав доступа.Я использую rails 3.1.3, ruby-1.9.2-p290, capistrano 2.11.2, Mac OS 10.6.8, и у нас настроены ssh-ключи.Однако мы не можем понять, откуда возникают проблемы с разрешениями.Мы думаем, что, возможно, capistrano пытается отправить код из репозитория git в качестве пользователя GIT в каталог deploy, или что-то в этом роде.Но это наша первая попытка развертывания, поэтому мы не уверены.Буду очень признателен за любую помощь!

О, и вот еще некоторые детали, которые мой друг сказал мне указать: appsrv-04.example.ca - это каноническое полное доменное имя хоста, а project.example.ca -CNAME, указывающая на запись A appsrv-04.example.ca.Файл known_hosts для пользователей git и deploy содержит все файлы appsrv-04, appsrv-04.example.ca, project и project.example.ca.

Ниже приведен результат запуска cap deploy: update.

[user@workstation]~/Code/projectapi $ cap deploy:update
 * executing `deploy:update'
  ** transaction: start
  * executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git ls-remote ssh://git@appsrv-04.example.ca/usr/local/git_root/projectapi.git master"
Enter passphrase for key '/Users/user/.ssh/id_rsa': 
 command finished in 4478ms
* executing "if [ -d /usr/local/www/sites/project.example.ca/public/shared/cached-copy ]; then cd /usr/local/www/sites/project.example.ca/public/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard e71d220f299271522517f7b4f028a9275d53326a && git clean -q -d -x -f; else git clone -q ssh://git@appsrv-04.example.ca/usr/local/git_root/projectapi.git /usr/local/www/sites/project.example.ca/public/shared/cached-copy && cd /usr/local/www/sites/project.example.ca/public/shared/cached-copy && git checkout -q -b deploy e71d220f299271522517f7b4f028a9275d53326a; fi"
servers: ["project.example.ca"]
Enter passphrase for /Users/user/.ssh/id_dsa: 
[project.example.ca] executing command
 ** [project.example.ca :: err] Permission denied, please try again.
 ** [project.example.ca :: err] Permission denied, please try again.
 ** [project.example.ca :: err] Permission denied (publickey,password).
 ** [project.example.ca :: err] fatal: The remote end hung up unexpectedly
  command finished in 650ms
*** [deploy:update_code] rolling back
 * executing "rm -rf /usr/local/www/sites/project.example.ca/public/releases/20120222225453; true"
servers: ["project.example.ca"]
[project.example.ca] executing command
command finished in 465ms
failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell '1.9.2-p290@project' -c 'if [ -d /usr/local/www/sites/project.example.ca/public/shared/cached-copy ]; then cd /usr/local/www/sites/project.example.ca/public/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard e71d220f299271522517f7b4f028a9275d53326a && git clean -q -d -x -f; else git clone -q ssh://git@appsrv-04.example.ca/usr/local/git_root/projectapi.git /usr/local/www/sites/project.example.ca/public/shared/cached-copy && cd /usr/local/www/sites/project.example.ca/public/shared/cached-copy && git checkout -q -b deploy e71d220f299271522517f7b4f028a9275d53326a; fi'" on project.example.ca

А вот мой файл развертывания:

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 
require "rvm/capistrano"          

set :application, "Project"

set :scm, "git"
set :repository,  "ssh://git@appsrv-04.example.ca/usr/local/git_root/project.git"
set :user, "deploy"

#set :rvm_bin_path, "/usr/local/rvm/bin"
set :rvm_ruby_string, "1.9.2-p290@project"

ssh_options[:forward_agent] = true

set :branch, "master"

set :deploy_via, :remote_cache

set :deploy_to, "/usr/local/www/sites/project.example.ca/public/"

set :use_sudo, false

set :domain, 'project.example.ca'

role :app, domain
role :web, domain
role :db,  domain, :primary => true

Ответы [ 2 ]

14 голосов
/ 23 февраля 2012

Вы почти наверняка правильно диагностировали эту проблему;вы пытаетесь проверить github-репозиторий как пользователь развертывания, а переадресованный ключ не настроен правильно.Похоже, вы включили forward_agent в Capistrano ... вы добавляете свой ключ к своему агенту, чтобы он был правильно перенаправлен?

Попробуйте сделать это с помощью ssh-add ~/.ssh/id-rsa и развернуть снова.

0 голосов
/ 25 февраля 2012

Проблема решена. Виртуальный хост был создан путем клонирования существующего и изменения IP-адреса. Я обновил файл / etc / hosts, чтобы использовать новое имя хоста, но не новый IP. Поэтому, когда пользователь развертывания пытался использовать ssh в качестве пользователя git ... это не удавалось, потому что на используемом IP-адресе нет пользователя git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...