kerkerj
接下來兩天要講 deploy 的部分
由於 deploy 的 script 其實非常的麻煩,因此我們就不提 deploy 的 script 了
我們只專注在 server 上需要什麼東西
今天要來看看 forever
這個套件
這個套件可以幫助 nodejs 的 server 遇上無預警的 server 掛掉時
會幫你自動重新啟動 nodejs 的 server
也就是說
假設說 nodejs 寫的 server 某個 route 有問題,
送 request 後會因為某些因素造成 server error 造成程式碼 crash 時
forever 的 monitor 會偵測到,並幫你自動重啟 server
至少不會造成其他正常存取 server 的使用者遭遇到 server down 的問題
這個套件可以選擇裝在 global 或是 project
在這邊我是選擇裝成 global
進到虛擬機
$ npm install -g forever
p.s. 如果遇到問題,試著跑下面的指令看看?
$ sudo chown vagrant:vagrant -R ~/.npm/
接下來我們就可以使用 forever
這個指令了!
原本我們要啟動 server 的話
是要下:
$ npm start
同義於:
$ node ./bin/server.js
如果要改用 forever
的話:
// 記得先到專案根目錄
$ forever start bin/server.js
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: ./bin/server.js
然後就會被丟到背景執行了
那要怎麼知道我的 server 有跑起來呢?
$ forever list
info: Forever processes running
data: uid command script forever pid logfile uptime
data: [0] 6qhd /home/vagrant/.nvm/v0.10.32/bin/node bin/server.js 13746 13748 /home/vagrant/.forever/6qhd.log 0:0:0:47.743
就會列出相關資訊以及 forever 自己的 log file 位置
要關閉的話:
$ forever stop bin/server.js
info: Forever stopped process:
data: uid command script forever pid logfile uptime
[0] 6qhd /home/vagrant/.nvm/v0.10.32/bin/node bin/server.js 13746 14061 /home/vagrant/.forever/6qhd.log 0:0:0:6.595
bin/server.js
也可以替換成 forever uid 或 pid
如果要重開的話
$ forever restart bin/server.js
超簡單!
這樣就可以不用擔心 server 突然掛掉了….嗎?
錯,還是必須要監控 server 狀態
畢竟,forever
也是會有 bug 的
所以自己的 server 自己顧
真正應用在 production 環境還是必須要監控的
今天就分享到這啦!