iT邦幫忙

DAY 28
0

從無到有打造 RESTful API service系列 第 28

[API-d28] - 實戰開發 - 發佈 - Forever

小弟的規劃表 - http://blog.kerkerj.in/blog/2014/11/01/planning/

好讀版 - http://blog.kerkerj.in/blog/2014/10/28/api-d28/

Github 參考

接下來兩天要講 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 環境還是必須要監控的

今天就分享到這啦!


上一篇
[API-d27] - 實戰開發 - Log 處理 及 Config (Db, Apikey)
下一篇
[API-d29] - 實戰開發 - 發佈 - Nginx
系列文
從無到有打造 RESTful API service30

尚未有邦友留言

立即登入留言