我正在尝试让 Capistrano 部署脚本工作,在我的部署文件中,我有以下内容......
set :application, "example.com"
role :app, "root@12.34.56.789"
role :web, "root@12.34.56.789"
role :db, "root@12.34.56.789", :primary => true
set :user, "root"
set :deploy_to, "/example/www/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
set :keep_releases, 10
namespace :deploy do
desc "Tell Passenger to restart the app."
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
desc "Symlink shared configs and folders on each release."
task :symlink_shared do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
run "ln -nfs #{shared_path}/assets #{release_path}/public/assets"
end
desc "Sync the public/assets directory."
task :assets do
system "rsync -vr --exclude='.DS_Store' public/assets #{user}@#{application}:#{shared_path}/"
end
end
after 'deploy:update_code', 'deploy:symlink_shared'
我还在部署文件中有一个 github 位置和 scm 变量。当我运行cap deploy
它时,它开始正常,要求输入 github 私人仓库的用户名/密码,我输入它,没问题。然后在成功并正确提取代码之后,我得到以下...
执行“如果 [ -d /example/www/example.com/shared/cached-copy ]; 然后 cd /example/www/example.com/shared/cached-copy && git fetch -q origin && git fetch --tags -q origin && git reset -q --hard 93e3432103327f29a9e66fa2755562bfe9bc4412 && git clean -q -d -x -f; 否则 git clone -q https://github.com/example/example.git /example/www/social u。 com/shared/cached-copy && cd /example/www/example.com/shared/cached-copy && git checkout -q -b deploy 93e3432103327f29a9e66fa2755562bfe9bc4412; fi" 服务器:["12.34.56.789"] 密码:
所以它要求输入密码。我猜这是为了ssh。我输入了 root 用户的密码,但是它无法显示这个...
[12.34.56.789] executing command
** [12.34.56.789 :: err] Username:
我也试过根本不输入密码,我得到以下信息......
Capistrano::ConnectionError,连接失败(Net::SSH::AuthenticationFailed: root)
问题是我输入了正确的 ssh 密码……我可以使用 putty 很好地 ssh。顺便说一句,我在本地 Windows pc 上运行 cap deploy,远程框是 linux 框。当然,我的位置不是 12.34.56.78,但你明白了。关于如何解决的任何想法?