iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Software Development

Web專案建置雜談系列 第 16

Web專案建置雜談 - 程序管理程式

  • 分享至 

  • xImage
  •  

這邊要稍微提下來講解一下,前一個實作裡面提到的 pm2 是甚麼作用,簡單來說就是「管理程式運行的程式」,你所起的每支程序只要是透過這樣的程式所啟動的,便可以透過管理程式來進行重啟、監控、日誌...等等的功能。

前兩篇的內容中有提到一個 pm2 的套件,並且我們也有將他置於容器中用於啟動我們的服務,那麼這種程序是用來做甚麼的呢?其實在 node.js 裡除了 pm2之外還有其他類似 foreverStrongLoop 這類的服務都是提供一個更方便的程序管理的入口,來處理整個node.js的生命週期。

程式在運行的時候,難免會遭遇到各種問題而導致無法進行下去,到也不是因為程式寫得不好,例如有可能因為硬體效能不足導致的OOM、被不明人士攻擊導致服務 crash ,也有可能是希望達到更新版本的時候能達到 0 downtime 升級,這時候這類的程式就能發揮作用。所以:

  • pm2 是一個「程序管理程式」
  • 提供程序監控的平台
  • 提供 cluster
  • 能設定各種條件進行程序的重啟,在崩潰或是即將崩潰時進行。
  • 各大雲端server都有支持pm2 deploy的功能

那麼要如何使用呢?

  1. 首先,我們要先全域的安裝套件

    npm install --global pm2
    
  2. 接著就可以啟動我們設定好的程序

    pm2 start ./web_server.json
    pm2 log
    

    web_server.json

    [
      {
        "name": "web_server",   // pm2 啟動實的命名
        "script": "./app.js",   // pm2 要啟動的程序
        "exec_mode": "cluster", // pm2 開啟cluster模式
        "instances": 4,         // pm2 啟動幾個cluster實體
        "out_file": "./pm2/web_server-out.log", 
        "pid_file": "./pm2/pid/web_server.pid",
        "args": "3000"          // 啟動時要帶入的參數
      }
    ]
    

    成功啟動後 就可以看到以下的畫面

    如果要在螢幕上監控log,便可以使用pm2 log的指令

    就可以看到你的程序都在你的監控下囉


上一篇
雲端主機的選擇
下一篇
Web專案建置雜談 - 實作篇(五)
系列文
Web專案建置雜談30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言