Last updated on 2023 年 1 月 30 日
公司的架構一直以來都是前後端分開,前端框架幫忙分擔後端渲染的重任,也就是現今熟悉的 SPA 架構,純粹 client-Side rendering ,但是問題也隨之而來。
常見的問題有:
- SEO
- SMO
- 起始、起始讀取時間 變慢
所以開始了架構重構之路。而我也開始了研究一些主機設定。今天就是要聊聊其中一塊,PM2 的設定。
安裝 & 使用 PM2
這裡我們假設你已經裝好 NodeJS 、NPM (or Yarn),然後為了講重點,所以不會提到 Nuxt 的部署。
- 裝 PM2
npm install pm2 -g
如果你是 Yarn…
yarn global add pm2
- 假設我有一個用 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
[…] PM2 基礎筆記 […]