0

我正在尝试使用 Monit 来监控并在某些 Rails 应用程序崩溃时重新启动它们。这些应用程序使用 Sphinx。Monit 不接受通常在 shell 中工作的命令。

monitrc 配置如下所示:

...
check process app_name
  with pidfile "/path/to/pidfile/searchd.production.pidfile"
  start program = sudo su user_name -c "cd /home/app_name/current
    && RAILS_ENV=production rake ts:start"
  stop program = sudo su user_name -c "cd /home/app_name/current
    && RAILS_ENV=production rake ts:stop"
...

访问 pidfile 的权限被拒绝,但如果我尝试:

with pidfile "sudo /path/to/pidfile/searchd.production.pidfile"

它不起作用。

同样,monit 不接受启动和停止程序 bash 命令。

我是否缺少明显的解决方法?顺便说一句,我是个菜鸟。

我还查看了http://capitate.rubyforge.org/recipes/sphinx-monit.html#sphinx:monit:start但并没有真正明白。

4

1 回答 1

0

bundle exec在调用之前尝试放置rake。像这样:

start program = sudo su user_name -c "cd /home/app_name/current
  && RAILS_ENV=production bundle exec rake ts:start"
stop program = sudo su user_name -c "cd /home/app_name/current
  && RAILS_ENV=production bundle exec rake ts:stop"

puma这是我无法监控生产服务器上的服务器和工作人员的主要原因delayed_job

更新:

我的工作示例:

check process puma with pidfile <%= puma_pidfile %>
  start program = "/bin/su - ubuntu -c 'cd /home/ubuntu/apps/artvasion/current && bundle exec puma -C config/puma.rb'"
  stop program =  "/bin/su - ubuntu -c 'kill `cat /home/ubuntu/apps/artvasion/shared/pids/puma.pid`'"
  # ...monitoring stuff
于 2012-09-19T08:32:56.997 回答