我正在尝试使用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,但实际上并没有得到它。
答案 0 :(得分: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