Upstart

如何使用 upstart 啟動 rake 任務

  • October 30, 2014

我正在嘗試將 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

引用自:https://serverfault.com/questions/327965