加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Capistrano Deploy – Net :: SSH :: Authenti

发布时间:2020-12-16 20:25:37 所属栏目:百科 来源:网络整理
导读:当我尝试运行部署设置时,为什么我得到认证失败?我正在使用ssh作为我的密码.我需要更改 database.yml或deploy.rb中的任何内容.它们列在下面. $cap deploy:setup * executing `deploy:setup' * executing "sudo -p 'sudo password: ' mkdir -p /var/www/apps/
当我尝试运行部署设置时,为什么我得到认证失败?我正在使用ssh作为我的密码.我需要更改 database.yml或deploy.rb中的任何内容.它们列在下面.
$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,"git@github.com: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

解决方法

对于Capistrano 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'
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读