2012-05-16 2 views
14

배치 설치를 실행하려고 할 때 인증이 실패하는 이유는 무엇입니까? ssh를 암호로 사용하고 있습니다. database.yml 또는 deploy.rb에서 아무 것도 변경해야합니까? 아래에 나열되어 있습니다.카피 스트라노 배포 - Net :: SSH :: AuthenticationFailed - AWS EC2

$ cap deploy:setup 
    * executing `deploy:setup' 
    * executing "sudo -p 'sudo password: ' mkdir -p /var/www/apps/sample_app /var/www/apps/sample_app 
/releases /var/www/apps/sample_app/shared /var/www/apps/sample_app/shared/system /var/www  
/apps/sample_app/shared/log /var/www/apps/sample_app/shared/pids" 
    servers: ["ec2-20-21-42-51.compute-1.amazonaws.com"] 
Password: 
connection failed for: ec2-20-21-42-51.compute-1.amazonaws.com 
(Net::SSH::AuthenticationFailed: ubuntu) 

deploy.rb

# The name of your app 
set :application, "sample_app" 

# The directory on the EC2 node that will be deployed to 
set :deploy_to, "/var/www/apps/#{application}" 

set :keep_releases, 3 

# deploy with git 
set :scm, :git 
set :repository, "[email protected]:username/sample_app.git" 
set :git_shallow_clone, 1 
set :branch, "master" 
set :use_sudo, true 

set :user, "ubuntu" 
ssh_options[:forward_agent] = true 
default_run_options[:pty] = true 

# The address of the remote host on EC2 (the Public DNS address) 
set :location, "ec2-20-21-42-51.compute-1.amazonaws.com" 

# setup some Capistrano roles 
role :app, location 
role :web, location 
role :db, location, :primary => true 

after 'deploy:update_code', 'deploy:symlink_db' 


namespace :deploy do 

desc "Restart Application" 
task :restart, :roles => :app do 
run "touch #{deploy_to}/#{shared_dir}/tmp/restart.txt" 
end 

desc "Symlinks the database.yml" 
task :symlink_db, :roles => :app do 
run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml" 
end 

end 

database.yml을

development: 
    adapter: mysql2 
    database: db/development.mysql2 
    pool: 5 
    timeout: 5000 
    database: sample_app 
    username: root 
    socket: /tmp/mysql.sock 

test: 
    adapter: mysql2 
    database: db/test.mysql2 
    pool: 5 
    timeout: 5000 
    database: sample_app 
    username: root 
    socket: /tmp/mysql.sock 

production: 
    adapter: mysql2 
    database: db/production.mysql2 
    pool: 5 
    timeout: 5000 
    database: sample_app 
    username: ubuntu 
    socket: /var/run/mysqld/mysqld.sock 

답변

15

카피 스트라 노 V2

는 고객 지원 PEM 파일의 위치를 ​​지정

ssh_options[:keys] = ["/where/ever/it/is/key.pem"] 

Capistrano v3의 경우 ssh_options는 약간 변경되었지만 기본 설정은 거의 동일합니다.

set :ssh_options, { 
    keys: %w(/where/ever/it/is/key.pem), 
    forward_agent: false, 
    user: 'ubuntu' 
} 
+3

여러 개발자가 배포 할 때 어떻게 처리해야합니까? – juanpastas

+1

'ssh_options [: keys] = [File.join (ENV [ "HOME"], "/.ssh/key.pem")]' –

0

는 "sudo는"권리가 있습니까? sudo 그룹의 사용자 "우분투"입니까?

+0

내가 ssh_options를 추가했다 [: 키] 내 deploy.rb 파일 – SilverNightaFall

+0

은 "sudo는"권한을 사용할 수있는 경우에 [ "/Users/Victoria/Documents/ServerKeys/key.pem"] =, 당신은해야합니다 당신의 사용자를 위해 그것을 허용하십시오 (우분투). Capistrano 또는 RoR 앱에 문제가 없습니다. "sudo"가 필요 없다면 use_sudo false를 설정할 수 있습니다. 내 우분투 사용자 설정 : sudo : x : 27 : oliver, deployer, michal – quatermain

0

ec2 인스턴스로 배포 할 때 우분투 사용자에게는 sudo 권한이 없습니다.

set :use_sudo, true

이 사람 :이

변경

set :use_sudo, false

관련 문제