2012-05-16 34 views
14

Tại sao tôi nhận được authenicationFailed khi tôi cố gắng chạy thiết lập triển khai? Tôi đang sử dụng ssh làm mật khẩu của mình. Tôi có cần phải thay đổi bất cứ điều gì trong database.yml hoặc deploy.rb. Chúng được liệt kê dưới đây.Capistrano Deploy - 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 

Trả lời

15

Đối Capistrano v2

Xác định vị trí của tập tin pem bạn

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

Đối với Capistrano v3 ssh_options đã thay đổi một chút, nhưng các cài đặt cơ bản là khá giống nhau.

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

cách chúng tôi xử lý điều này khi một số nhà phát triển triển khai? – juanpastas

+1

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

0

Bạn có "sudo" quyền? Người dùng "ubuntu" trong nhóm sudo?

+0

tôi đã có thêm ssh_options [: Phím] = [ "/Users/Victoria/Documents/ServerKeys/key.pem"] để tập deploy.rb tôi – SilverNightaFall

+0

Nếu bạn có thể sử dụng "sudo" quyền, bạn phải cho phép nó cho người dùng của bạn (ubuntu). Vấn đề không phải là trong ứng dụng capistrano hoặc RoR. Nếu bạn không cần "sudo", bạn có thể đặt: use_sudo false. Cài đặt ubuntu của tôi cho người dùng: sudo: x: 27: oliver, deployer, michal – quatermain

0

Khi triển khai sang phiên bản ec2, bạn sẽ không có quyền sudo với người dùng ubuntu.

Thay đổi này:

set :use_sudo, true

Để này:

set :use_sudo, false

Các vấn đề liên quan