3

当我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
4

3 回答 3

5

假设您的部署用户具有适当的权限并且您不需要使用sudo,您可以设置:use_sudo为 false 并且 Capistrano 不会使用它。

只需添加

set :use_sudo, false

到你的deploy.rb.

于 2012-09-23T23:50:57.910 回答
1

在要部署到的机器上设置 SSH 公钥。这不是 Capistrano 的事情。 这是一个指南。您可以通过快速搜索找到许多其他内容。

于 2012-09-23T23:14:38.820 回答
1

如果您确实需要 root 权限才能删除 /opt/deployed_rails_apps/myapp/releases/ 下的文件,那么您可以编辑 /etc/sudoers 文件以允许您的部署用户在没有密码的情况下使用 sudo。

但是我怀疑@matt using 的答案set :use_sudo, false应该可以解决您的问题。

于 2012-09-24T01:08:18.640 回答