我正在尝试使用服务器上的远程 git 存储库使用 capistrano 部署我的 rails 4 应用程序。我的 git 存储库位于我将应用程序部署到的同一台服务器上。每当我尝试时,cap deploy
我都会收到此错误
my/local/rails/app/directory$ cap deploy
triggering load callbacks
* 2013-08-30 15:51:20 executing `deploy'
* 2013-08-30 15:51:20 executing `deploy:update'
** transaction: start
* 2013-08-30 15:51:20 executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git ls-remote ssh://git@myserver.com/var/repos/test.git master"
command finished in 684ms
* executing "if [ -d /var/www/test/www/shared/cached-copy ]; then cd /var/www/test/www/shared/cached-copy && git fetch origin && git fetch --tags origin && git reset --hard 9de1df43a7959b953dc0b35c2ab27ba84698602a && git clean -d -x -f; else git clone -b master ssh://git@myserver.com/var/repos/test.git /var/www/test/www/shared/cached-copy && cd /var/www/test/www/shared/cached-copy && git checkout -b deploy 9de1df43a7959b953dc0b35c2ab27ba84698602a; fi"
servers: ["myserver.com"]
[myserver.com] executing command
** [myserver.com :: out] Cloning into '/var/www/test/www/shared/cached-copy'...
** [myserver.com :: out]
** [myserver.com :: out] git@myserver.com's password:
Password:
** [myserver.com :: out]
** [myserver.com :: out] Permission denied, please try again.
** git@myserver.com's password:
Password:
** [myserver.com :: out]
** [myserver.com :: out] Permission denied, please try again.
** git@myserver.com's password:
Password:
** [myserver.com :: out]
** [myserver.com :: out] Permission denied (publickey,password).
** fatal: Could not read from remote repository.
**
** Please make sure you have the correct access rights
** and the repository exists.
command finished in 18891ms
*** [deploy:update_code] rolling back
* executing "rm -rf /var/www/test/www/releases/20130830225140; true"
servers: ["myserver.com"]
[myserver.com] executing command
command finished in 700ms
failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-2.0.0-p247' -c 'if [ -d /var/www/test/www/shared/cached-copy ]; then cd /var/www/test/www/shared/cached-copy && git fetch origin && git fetch --tags origin && git reset --hard 9de1df43a7959b953dc0b35c2ab27ba84698602a && git clean -d -x -f; else git clone -b master ssh://git@myserver.com/var/repos/test.git /var/www/test/www/shared/cached-copy && cd /var/www/test/www/shared/cached-copy && git checkout -b deploy 9de1df43a7959b953dc0b35c2ab27ba84698602a; fi'" on myserver.com
当我输入我的密码时,它会说权限被拒绝,我确定密码是正确的。这是我的deploy.rb
require 'bundler/capistrano'
require 'rvm/capistrano'
set :user, 'user'
set :domain, 'myserver.com'
set :application, "blog"
set :repository, "ssh://git@myserver.com/var/repos/test.git"
set :scm_passphrase, "password"
set :deploy_to, '/var/www/test/www'
set :deploy_via, :remote_cache
set :scm, :git
set :branch, 'master'
set :scm_verbose, true
set :use_sudo, false
set :normalize_asset_timestamps, false
set :rails_env, :production
set :rvm_type, :system
set :rvm_ruby_string, 'ruby-2.0.0-p247'
# set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess based on known version control directory names
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`
role :web, domain # Your HTTP server, Apache/etc
role :app, domain # This may be the same as your `Web` server
role :db, domain, :primary => true # This is where Rails migrations will run
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
after "deploy", "deploy:migrate", "deploy:restart"
after "deploy:update", "deploy:restart"
# if you want to clean up old releases on each deploy uncomment this:
# after "deploy:restart", "deploy:cleanup"
# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
# If you are using Passenger mod_rails uncomment this:
# namespace :deploy do
# task :start do ; end
# task :stop do ; end
# task :restart, :roles => :app, :except => { :no_release => true } do
# run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
# end
# end
namespace :deploy do
desc "cause Passenger to restart"
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
end
我可以使用 ssh 密钥从命令行 ssh 进入我的服务器,所以工作正常。有谁知道问题是什么?谢谢。