sudo密码尝试为rails应用程序设置monit失败

时间:2013-07-10 13:02:06

标签: ruby-on-rails capistrano monit

我跟随Ryan Bates在Monit http://railscasts.com/episodes/375-monit?view=asciicast上的Railscast,这是Rails应用程序的监控系统。在其中,他为monit创建了一个capistrano配方(见下文),该配方使用命令cap monit:setup运行。当我运行它时,它会失败并显示此消息

command finished in 200ms
    failed: "sh -c 'sudo -p '\\''sudo password: '\\'' service monit reload'" on 192.XXX.XXX.XXX

这显然是与密码相关的错误,但我无法弄清楚为什么会发生这种情况,因为脚本运行start stop restart syntax reload的早期命令似乎成功运行,直到它到达reload

注意脚本中的倒数第二行使用root,我认为它也可能是root问题,因为我使用不同的用户名登录到我的服务器(但是使用了sudo)权限)。因此,我将第二行中的root更改为我的用户名并再次运行cap monit:setup,但我收到了同样的错误。

* 2013-07-10 05:52:01 executing `monit:syntax'
  * executing "sudo -p 'sudo password: ' service monit syntax"
    servers: ["192.XXX.XXX.XXX"]
    [192.XXX.XXX.XXX] executing command
 ** [out :: 192.XXX.XXX.XXX] Control file syntax OK
    command finished in 248ms
  * 2013-07-10 05:52:02 executing `monit:reload'
  * executing "sudo -p 'sudo password: ' service monit reload"
    servers: ["192.XXX.XXX.XXX"]
    [192.XXX.XXX.XXX] executing command
 ** [out :: 192.XXX.XXX.XXX] Usage: /etc/init.d/monit {start|stop|restart|force-reload|syntax}
    command finished in 200ms
failed: "sh -c 'sudo -p '\\''sudo password: '\\'' service monit reload'" on 192.XXX.XXX.XXX

Monit.rb食谱

namespace :monit do
  desc "Install Monit"
  task :install do
    run "#{sudo} apt-get -y install monit"
  end
  after "deploy:install", "monit:install"

  desc "Setup all Monit configuration"
  task :setup do
    monit_config "nginx"
    syntax
    reload
  end
  after "deploy:setup", "monit:setup"

  %w[start stop restart syntax reload].each do |command|
    desc "Run Monit #{command} script"
    task command do
      run "#{sudo} service monit #{command}"
    end
  end
end

def monit_config(name, destination = nil)
  destination ||= "/etc/monit/conf.d/#{name}.conf"
  template "monit/#{name}.erb", "/tmp/monit_#{name}"
  run "#{sudo} mv /tmp/monit_#{name} #{destination}"
  run "#{sudo} chown root #{destination}"
  run "#{sudo} chmod 600 #{destination}"
end

0 个答案:

没有答案