以下內容,我們將引導你完成Node.js應用程式的順利部署,以及如何使用PM2實現持久化運行,讓你的應用程式在生產環境中保持高效運行,同時享受PM2所提供的強大管理功能。無論是初次上線還是優化現有應用程式,這一篇都將為你提供實用且易實施的指南。什麼是PM2?PM2是一個先進的Node.js進程管理工具,它不僅能夠確保你的應用程式一直運行,還提供了豐富的功能,包括性能監控、日誌管理、自動重啟和擴展等。安裝PM2首先,確保你的Node.js環境已經安裝,然後運行以下命令全局安裝PM2:npminstallpm2g透過PM2啟動應用程式使用PM2啟動一個Node.js應用程式非常簡單,只需運行以下命令:pm2startapp.js這將啟動你的應用程式,PM2會為其生成一個唯一的進程ID,並將其放入背景運行。透過PM2啟動多組應用程式PM2支持同時管理多個應用程式,可以通過應用程式的名稱來區分。例如:pm2startapp1.jsname"app1"pm2startapp2.jsname"app2"使用PM2監控應用程式狀態使用PM2監控應用程式的性能非常容易,運行以下命令即可:pm2monit查看PM2運行日誌當你使用PM2管理你的Node.js應用程式時,了解日誌是追踪應用程式運行狀態和排除問題的重要手段。以下是有關如何使用pm2logs的詳細解說:PM2日誌基本用法pm2logs如果你只想查看特定應用程式的日誌,可以提供應用程式的名稱或ID:pm2logsapp1或pm2logs0使用應用程式的IDPM2日誌選項pm2logs命令還支持一些選項,以便更靈活地檢視日誌:json:以JSON格式顯示日誌內容。format:指定輸出的格式,如"YYYYMMDDHH:mm:ss"。nostream:不要實時輸出日誌,僅在檢索期間顯示。PM2日誌級別PM2的日誌包括多個級別,例如out標準輸出和error錯誤輸出。你可以使用不同的命令來查看特定級別的日誌:pm2logsout或pm2logserrorPM2JSON配置在使用PM2管理Node.js應用程式時,可以使用JSON配置文件來指定應用程式的各種設定。這個配置文件提供了更多高級的選項,以及可以用於自動化和持久化的設置。以下是一個簡單的app.json的範例:PM2單個JSON配置{"name":"app","script":"app.js","watch":true,"instances":"max","execmode":"cluster","env":{"NODEENV":"dev"},"logdateformat":"YYYYMMDDHH:mmZ"}PM2多個JSON配置{"apps":{"name":"app1","script":"app1.js","watch":true,"instances":"max","execmode":"cluster","env":{"NODEENV":"dev"},"logdateformat":"YYYYMMDDHH:mmZ"},{"name":"app2","script":"app2.js","watch":true,"instances":"max","execmode":"cluster","env":{"NODEENV":"dev"},"logdateformat":"YYYYMMDDHH:mmZ"}]}以下解釋這個app.json的參數設定:name:應用程式的名稱。script:要執行的主要應用程式檔案。watch:監視檔案的變化,自動重新啟動應用程式。也可以設置為監聽特定檔案或資料夾更動"app.js","routes","public"]。instances:要啟動的進程數量,這裡設置為max表示使用所有可用的CPU核心。execmode:執行模式,這裡設置為cluster表示使用多進程模式,fork則為單進程。env:環境變數的配置,這裡設置了NODEENV為dev。logdateformat:日誌的日期格式。以上只是一個簡單的例子,app.json支持的設置還有很多,包括生命周期事件、部署配置、網絡設置等。透過這樣的配置文件,你可以更靈活地管理和配置你的Node.js應用程式。使用app.json的方式,你只需要運行以下命令即可啟動應用程式:pm2startapp.json系列文章ahref"https://pardn.io/blog/nodejsinstall"target"self"Node.js.JavaScript的後端魔法/aahref"https://pardn.io/blog/nodejspromiseasync"target"self"Promise與Async/Await的非同步設計/aahref"https://pardn.io/blog/nodejshelloworld"target"self"建立第一個Node.js應用程式有多難?/aahref"https://pardn.io/blog/nodejsexpress"target"self"什麼?Express竟然如此的好用/aahref"https://pardn.io/blog/nodejsmongodbmysql"target"self"前進資料庫!MongoDB與MySQL/aahref"https://pardn.io/blog/nodejsmiddleware"target"self"中介軟體Middleware與定制流程/aahref"https://pardn.io/blog/nodejspugejs"target"self"服務端渲染SSR的救星!Pug與EJS/aahref"https://pardn.io/blog/nodejsjwtxsscsp"target"self"實作JWT會員登入以及防範SQL注入與XSS攻擊/aahref"https://pardn.io/blog/nodejsrestfulapi"target"self"RESTfulAPI該怎麼設計?/aahref"https://pardn.io/blog/nodejsmochasupertest"target"self"Mocha?Supertest?單元與整合測試?/a搭配Pm2讓Node.js持久化在線相關連結作者:PardnChiu]https://github.com/pardnchiuNode.js官方網站:https://nodejs.org/zhtw]https://nodejs.org/zhtwPM2官方網站:https://pm2.keymetrics.io]https://pm2.keymetrics.io