Skip to content

PM2 基礎筆記

Last updated on 2023 年 1 月 30 日

公司的架構一直以來都是前後端分開,前端框架幫忙分擔後端渲染的重任,也就是現今熟悉的 SPA 架構,純粹 client-Side rendering ,但是問題也隨之而來。

常見的問題有:

  • SEO
  • SMO
  • 起始、起始讀取時間 變慢

所以開始了架構重構之路。而我也開始了研究一些主機設定。今天就是要聊聊其中一塊,PM2 的設定。

安裝 & 使用 PM2

這裡我們假設你已經裝好 NodeJS 、NPM (or Yarn),然後為了講重點,所以不會提到 Nuxt 的部署。

  1. 裝 PM2
npm install pm2 -g

如果你是 Yarn…

yarn global add pm2
  1. 假設我有一個用 NodeJS 寫出來的應用叫做 app.js ,我只需要以下指令就可以啟動服務
pm2 start app.js

這樣應該就可以看到你的 NodeJS 寫出來的應用可以跑在背景了,然後你可能需要 Nginx 這類的 網頁伺服器 來做反向代理,這邊就不贅述了。

Log 存在哪裡?

pm2 的相關文件預設放在 $HOME/.pm2/路徑底下,其 log 主要有兩類:

  • pm2 本身: 存放於$HOME/.pm2/pm2.log
  • pm2 的應用們:存放於$HOME/.pm2/logs/目錄下

應用程式的 PM2 設定檔

我們也可以針對我們的應用程式去做 PM2 的初始化設定,寫好設定後,可以配合我們之後的 CI/CD 相當方便。

透過以下指令生成設定文件ecosystem.json

pm2 ecosystem

就會產生 ecosystem.json 如下,

{
    apps : [
        {
            name: "eric",
            max_memory_restart: "300M",
            script: "/var/www/eric/app.js",
            instances: 4,
            exec_mode: "cluster",
            env: {
                NODE_ENV: "production"
            }
        }
    ]
 }

這份設定文件,意味著我在這個應用程式採用 cluster 模式,啟動了4個服務進程;如果服務佔用的記憶體超過 300M 的話,PM2 就會幫我自動重啟

其他還有很多參數可以使用,細節可以參考:Configuration File

Published in筆記

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *