当我在流程结束时的某个时刻运行cap deploy
时,我会收到密码提示...
** keeping 5 of 6 deployed releases
* executing "sudo -p 'sudo password: ' rm -rf /opt/deployed_rails_apps/myapp/releases/20120922200242"
servers: ["myhost.com"]
[username@myhost.com] executing command
Password:
有没有办法让我完成而不提示我输入密码?
这是我的deploy.rb
...
require "bundler/capistrano"
require "rvm/capistrano"
set :rvm_ruby_string, 'ruby-1.9.3-p194@run_passenger'
set :rvm_type, :user
set :application, 'myapp'
set :repository, 'git@github.com:fakename/myrepository.git'
set :deploy_to, "/opt/deployed_rails_apps/#{application}"
set :scm, "git"
set :branch, "master"
set :deploy_via, :remote_cache
set :keep_releases, 5
after "deploy:update", "deploy:cleanup"
load 'deploy/assets'
role :app, 'username@myhost.com'
role :web, 'username@myhost.com'
namespace :deploy do
task :start, :roles => :app do
run "touch #{current_release}/tmp/restart.txt"
end
task :stop, :roles => :app do
# Do nothing.
end
desc "Restart Application"
task :restart, :roles => :app do
run "touch #{current_release}/tmp/restart.txt"
end
end
答案 0 :(得分:5)
假设您的部署用户具有适当的权限而您不需要使用sudo
,则可以将:use_sudo
设置为false,而Capistrano将不会使用它。
添加
set :use_sudo, false
到deploy.rb
。
答案 1 :(得分:1)
在要部署到的计算机上设置SSH公钥。这不是卡皮斯特拉诺的事情。 Here's one guide。您可以通过快速搜索找到许多其他内容。
答案 2 :(得分:1)
如果您确实需要root权限才能删除/ opt / deployed_rails_apps / myapp / releases /下的文件,那么您可以编辑/ etc / sudoers文件以允许部署用户在没有密码的情况下使用sudo。
但我怀疑@matt使用set :use_sudo, false
的答案应该解决你的问题。