ser*_*erg 9 deployment capistrano ruby-on-rails bitbucket
我正在尝试使用Capistrano将我的应用程序部署到我的DigitalOcean服务器上.
这不是我第一次在DigitalOcean上配置RoR服务器而Capistrano部署了这就是为什么我感到困惑; 我的工作流程没有改变任何内容.
这是我的Capistrano配置文件:
require 'bundler/capistrano'
require 'rvm/capistrano'
set :application, "foobar"
set :repository, "git@bitbucket.org:sergiotapia/foobar.git"
set :ping_url, "http://192.168.1.1/"
set :scm, :git
set :scm_verbose, true
default_run_options[:pty] = true
set :user, "sergiotapia" # The user on the VPS server.
set :password, "hunter2"
set :use_sudo, false
set :deploy_to, "/home/sergiotapia/www/#{application}"
set :deploy_via, :remote_cache
set :keep_releases, 1
set :rails_env, "production"
set :migrate_target, :latest
role :web, "192.168.1.1"
role :app, "192.168.1.1"
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, roles: :app, except: { no_release: true } do
run "sudo touch #{File.join(current_path,'tmp','restart.txt')}"
end
end
# Add this to add the `deploy:ping` task:
namespace :deploy do
task :ping do
system "curl --silent #{fetch(:ping_url)}"
end
end
namespace :gems do
task :bundle, :roles => :app do
run "cd #{release_path} && bundle install --without development && rake db:migrate RAILS_ENV=production"
end
end
after "deploy:update_code", "gems:bundle"
# Add this to automatically ping the server after a restart:
after "deploy:restart", "deploy:ping"
Run Code Online (Sandbox Code Playgroud)
当跑步时cap deploy:setup
,cap deploy:check
一切都恢复了绿色(工作正常).
它在实际cap deploy
命令上失败了.
** [192.168.1.1 :: out] Enter passphrase for key '/home/sergiotapia/.ssh/id_rsa':
Password:
** [192.168.1.1 :: out]
** [192.168.1.1 :: out] Permission denied (publickey).
** [192.168.1.1 :: out]
** [192.168.1.1 :: out] fatal: Could not read from remote repository.
** [192.168.1.1 :: out]
** [192.168.1.1 :: out]
** [192.168.1.1 :: out] Please make sure you have the correct access rights
** [192.168.1.1 :: out]
** [192.168.1.1 :: out] and the repository exists.
** [192.168.1.1 :: out]
Run Code Online (Sandbox Code Playgroud)
我已经将我的id_rsa.pub
文件添加到BitBucket,并确保使用该ssh-add -l
命令将其添加到我的SSH代理中.
即使从远程服务器测试SSH也可以正常工作:
sergiotapia@tappia:~/www$ ssh -T git@bitbucket.org
logged in as sergiotapia.
You can use git or hg to connect to Bitbucket. Shell access is disabled.
Run Code Online (Sandbox Code Playgroud)
那么是什么让我拒绝访问BitBucket上的存储库?
Capistrano是否以非用户身份运行sergiotapia
?这会是它的原因吗?
确保将ssh密钥添加到身份验证代理:
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
并在deploy.rb中确保
ssh_options[:forward_agent] = true
Run Code Online (Sandbox Code Playgroud)
编辑:如果在重新启动时丢失ssh-add配置,则应执行以下操作:
从macOS Sierra 10.12.2开始,Apple添加了一个名为UseKeychain的ssh_config选项,该选项允许"正确"解决问题.将以下内容添加到您的~/.ssh/config
文件中:
Host *
AddKeysToAgent yes
UseKeychain yes
Run Code Online (Sandbox Code Playgroud)
小智 3
归档时间: |
|
查看次数: |
3681 次 |
最近记录: |