2
我有使用Jruby和Puma作爲Web服務器的Rails應用程序。 Puma並沒有自己守護進程,所以我將它封裝在bash腳本中以處理生成的pid(如Monit FAQ中所述)。下面的腳本是:在Jruby中使用Monit和Puma
#!/bin/bash
APP_ROOT="/home/user/public_html/app"
export RAILS_ENV=production
export JRUBY_OPTS="--1.9"
export PATH=/home/user/.rbenv/shims:/home/user/.rbenv/bin:$PATH
case $1 in
start)
echo $$ > $APP_ROOT/puma.pid;
cd $APP_ROOT;
exec 2>&1 puma -b tcp://127.0.0.1:5000 1>/tmp/puma.out
;;
stop)
kill `cat $APP_ROOT/puma.pid` ;;
*)
echo "usage: puma {start|stop}" ;;
esac
exit 0
這個工作的命令行和它的作品,即使我運行下面的模擬monit的後殼執行:
env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/sh
相關monitrc線以下:
check process puma with pidfile /home/user/public_html/app/puma.pid
start program = "/usr/bin/env PATH=/home/user/.rbenv/shims:/home/user/.rbenv/bin:$PATH /home/user/puma.sh start"
stop program = "/usr/bin/env PATH=/home/user/.rbenv/shims:/home/user/.rbenv/bin:$PATH /home/user/puma.sh stop"
的monit的日誌顯示它不斷地嘗試啓動彪馬,它甚至只要再生一個新的PID得到,但始終沒能真正開始的美洲獅。每次我嘗試從其他任何環境運行此腳本時,我都會認爲它可行 - 除monit外。
你不能守護配置文件嗎? https://github.com/puma/puma/blob/master/examples/config.rb#L37 – 2013-12-05 09:51:31