DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 在Linux上用forever實現Node.js項目自啟動
在Linux上用forever實現Node.js項目自啟動
編輯:關於JavaScript     

那麼能否利用forever加啟動腳本方式解決上述問題呢?答案當然是肯定的,只不過有點麻煩,而且forever官方缺少詳細的配置文檔。我在配置的時候也走了一些彎路,下面詳細來說。

注:本文的實驗環境是Ubuntu Server 12.04 LTS x86_64,在CentOS上的配置更簡單一些

最早,我想著試試在/etc/rc.local中增加一句forever start xxx看看,結果發現Ubuntu(其他系統一樣)就不鳥我,主要矛盾就是mongodb使用這種方式就可以跑起來,forever就不行,無奈之下,還是從/etc/init.d的角度去考慮吧。

前提是要先把forever好,方法很簡單,執行如下命令就好:

npm install forever -g

安裝完成後,用一個簡單的Node程序測試一下:

forever start test.js
forever stop test.js
forever restart test.js

只要不提示error,就表明forever是可以用的,也就是說用forever來後台開啟一個Node項目的基本條件已經具備,剩下的就是來編寫一個啟動腳本了。

腳本的基本內容如下,感謝原作者的辛勤勞動:

#!/bin/bash
### BEGIN INIT INFO
# Provides:  xiyoulib
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop:  0 1 6
# Short-Description: Start daemon at boot time
# Description:  Enable service provided by daemon.
### END INIT INFO
# chkconfig: 345 88 08
# description: Forever for Node.js

DEAMON=/node.js/XiyouLibNodeExpress/bin/www  #這裡需要填寫你自己的Node項目的啟動腳本文件
LOG=/node.js/log/log #可選,日志文件目錄
PID=/node.js/pid #必填內容,用於記錄forever的進程號

export PATH=$PATH:/usr/local/bin #在這裡指定一下Node的可執行程序安裝目錄,我的是/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules #這裡是Node類庫的路徑

#往下的內容就不用修改了

node=node
forever=forever

case "$1" in
 start)
  $forever start -l $LOG --pidFile $PID -a $DEAMON
  ;;
 stop)
  $forever stop --pidFile $PID $DEAMON
  ;;
 stopall)
  $forever stopall --pidFile $PID
  ;;
 restartall)
  $forever restartall --pidFile $PID
  ;;
 reload|restart)
  $forever restart -l $LOG --pidFile $PID -a $DEAMON
  ;;
 list)
  $forever list
  ;;
 *)
  echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"
  exit 1
  ;;
esac

在這裡提醒一下:最好為Node項目單獨在根目錄下建立一個目錄,如/node.js,然後權限設為754,這樣可以避免一些權限問題而造成的麻煩!

由於用的是Ubuntu Server系統,上面還配置了MongoDB的啟動服務,而且在其init.d的腳本中加入了以下的語句:

# Required-Start:  $all
# Required-Stop:   $all

所以在以後自己添加的時候系統會提示錯誤,所以在Node項目的啟動腳本裡我加了前面一串的說明注釋,以便Ubuntu Server系統進行設置,如果在CentOS上,應該不會出現類似的問題,這點要特別注意!

即以下的說明信息:

### BEGIN INIT INFO
# Provides:     xiyoulib
# Required-Start:  $all
# Required-Stop:   $all
# Default-Start:   2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: Start daemon at boot time
# Description:    Enable service provided by daemon.
### END INIT INFO

腳本編輯完成後使用chkconfig --list指令查看一下自己添加的服務是否生效,即3和5全部要為on才可以實現開機自啟動。

如果3和5沒有被置為on,那麼請執行chkconfig --level 35 [你的服務名] on即可,Ubuntu Server可能會報一些warning,但是只要能將所需設置的服務的3、5變為on,其他的錯誤可以忽略(我感覺這是系統自己的事)。

設置完成後即可實現Node項目在Linux上的自啟動,可以shutdown -r now試一下能否自啟,啟動好以後直接去訪問一下你設定的端口號、虛擬目錄神馬的,如果出來想要的就大功告成了!

但是如果不對,就好好檢查一些腳本,然後根據報錯進行相關修改,畢竟我也是試出來的嘛!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved