Debian

如何從 Debian 上的 shell 腳本啟動 Rails?

  • November 9, 2013

目前我真的沒有必要去打擾乘客或卡皮斯特拉諾。我只是想在埠 3000 上啟動時執行 rails。我已經嘗試盡可能多地為節點複製本教程來執行 rails:

我有一個railsup腳本,/etc/init.d/類似於:

#!/bin/sh
export PATH=$PATH:/usr/local/bin

case "$1" in
 start)
  cd /root/rails_app; /usr/local/rvm/gems/ruby-2.0.0-p247/bin/rails server -d -p 3005
 ;;
 # starting other stuff
*)

我也把它包括在update-rc.d

我讓它工作,但前提是我手動執行腳本 - 它似乎不會在啟動時執行。../bin/rails啟動時不可用有什麼原因嗎?

我想我不知道關於 ruby​​ path \ rvm \ rails 的一些事情?有沒有辦法為此使用 crontab 的 @reboot ?

使用init.d

有了新的 System-V 並行化系統,您必須在腳本頂部添加一個INIT INFO部分。

查看/etc/init.d/README並嘗試將其添加到腳本頂部:

#! /bin/sh

### BEGIN INIT INFO
# Provides:          rails
# Required-Start:    $local_fs $remote_fs
# Required-Stop:
# X-Start-Before:    rmnologin
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Start Rails on port 3000
### END INIT INFO

使用cron(並以您自己的使用者身份執行)

您可以在每次重新啟動時使用特定語法執行守護程序:cron

crontab -l |
  sed '$a@reboot /usr/bin/rail-or-other-bin -arg1 -arg2 -port 3000' |
  crontab

警告執行這個命令(crontab沒有參數和來自管道的標準輸入)會改變你的crontab!看man crontab

crontab…並在沒有最後一個之前嘗試這個:

crontab -l |
  sed '$a@reboot /usr/bin/rail-or-other-bin -arg1 -arg2 -port 3000'

這樣做的好處是守護程序在使用者空間中執行,執行錯誤將通過正常的 cron 方式作為郵件發送給您。

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