Upstart
如何使用 upstart 啟動 rake 任務
我正在嘗試將 Resque 工作人員設置為 Upstart 初始化腳本,供 Monit 在 Rails 應用程序中使用。我不是管理員,我嘗試使用我們伺服器上的其他初始化腳本中的範例來編寫這個,這就是我得到的:
start on startup stop on shutdown pre-start script cd /var/www/my-app/current end script script exec bundle exec rake environment resque:work RAILS_ENV=staging PIDFILE=/var/run/resque.pid QUEUE=sync >> /var/log/resque.log end script
但它不起作用,如果我嘗試
sudo start resque
我得到:resque start/running, process XXXX
據我所知,什麼都沒有啟動,沒有找到 Resque 程序,也沒有日誌文件。我對如何讓它工作感到很迷茫。
更新:我找到了系統日誌文件,它說:
Nov 4 17:20:09 fantasysports init: resque main process (3057) terminated with status 2
更新:我嘗試使用 sudo 執行它(是的,這沒有意義!)並刪除了到日誌文件的輸出重定向,現在我得到了不同的狀態程式碼:
Nov 4 17:29:44 fantasysports init: resque main process (3276) terminated with status 10
更新:最終為 init.d 放棄了 Upstart,因為
start-stop-daemon
有更好的文件記錄,它讓我可以完全控制正在發生的事情。
這就是我的做法..這也增加了rvm
start on startup stop on starting rcS chdir /data/pusher/current env RAILS_ENV=production script /usr/local/bin/rvm-shell '1.9.2@app' -c 'JOBS_PER_FORK=25 RAILS_ENV=production QUEUE=app_production bundle exec rake --trace resque:work >> /data/app/current/log/app-worker.production.log 2>&1' end script
編輯:這是我作為不同使用者執行的方法.. chdir 似乎沒有受到尊重.. 所以它有點 hacky
start on runlevel [2345] stop on starting rcS chdir /data/app/current env RAILS_ENV=production script sudo -u user -s -- "cd /data/app/current; export RAILS_ENV=production; /usr/local/bin/rvm-shell '1.9.2-p180@app' -c 'QUEUE=app_production bundle exec rake resque:work >> /data/app/current/log/app-worker.production.log 2>&1'" end script
您幾乎需要更改為正確的目錄並在 sudo 命令中設置 RAILS_ENV