A Node.js process manager is a useful tool to ensure that a Node.js process or script runs continuously (forever) and can enable it to auto-start at system boot.
它讓您可以監控運行中的服務,並便利了常見的系統管理任務(如在失敗時重新啟動、停止、無宕機情況下重新載入配置、修改環境變量/設定、顯示性能指標等)。它還支持應用程式的日誌記錄、叢集和負載平衡,以及許多其他有用的process管理功能。
也閱讀:2019年 Developers最佳的14個NodeJS框架
A package manager is useful especially for deployment of Node.js applications in a production environment. In this article, we will review four process managers for Node.js application management in a Linux system.
1. PM2
PM2是一個開源的、進階的、功能齊全的、跨平台的並且是最受欢迎的Node.js生產级别的process管理器,配備內置負載平衡器。它讓您可以列印、監控和對所有啟動的Nodejs processes進行操作,並且支持丛集模式。

它支持應用程式監控:提供一種簡單的方式來監控應用程序(記憶體和CPU)的使用情況。它通過讓您通過process文件(支持格式包括Javascript、JSON和YAML)配置和調整每個應用程序的行為,來支持您的process管理 workflow。
應用日志在生產環境中始終是關鍵,PM2讓您輕鬆管理應用程式的日志。它提供不同的方法和格式來處理和顯示日志。您可以實時顯示日志,需要在時進行刷新和重新加載。
重要地是,PM2支援啟動脚本,您可以Configure them to auto-start your processes across expected or unexpected machine restarts. 它也支持在當前目錄或其子目錄中修改文件時自動重新啟動應用程序。
此外,PM2配有模塊系統,允許用戶為 Nodejs 過程管理創建自訂模塊。例如,您可以為日志輪换模塊或負載均衡創建一個模塊,還有更多。
最後但非最不重要的是,如果您使用Docker 容器,PM2 允許容器整合,並提供一個 API 系統,讓您可以通過程式化方式使用它。
2. StrongLoop PM
StrongLoop PM 也是一個開源的、進階的生產過程管理器,與 PM2 同樣為 Node.js 應用程序內建負載均衡,並可通過命令行或圖形介面使用。

它支持应用程序监控(查看性能指标,如事件循环时间、CPU和内存使用情况),多主机部署、集群模式、零停机应用程序重启和升级、故障时自动进程重启以及日志聚合和管理。
此外,它还支持Docker,允许将性能指标导出到兼容StatsD的服务器,并在第三方控制台(如DataDog、Graphite、Splunk以及Syslog和原始日志文件)中查看。
3. Forever
Forever是一个开源的、简单且可配置的命令行界面工具,用于持续运行给定的脚本(永远)。它适用于运行较小规模的Node.js应用程序和脚本。你可以通过命令行或嵌入到代码中使用forever。

它允許你管理 (開始、列印、停止、全部停止、重新啟動、全部重新啟動等) Node.js processes,並且支持 監視文件更改、除錯模式、應用程式日志、process 杀死 以及退出信號的自訂,還有更多功能。此外,它還支持多個使用選項,你可以直接從命令行傳遞,或者在 JSON 文件中傳遞。
4. SystemD – 服務和系統管理員
在 Linux 中,Systemd 是一個 Daemon,它管理等如进程中文件系統的其他系統資源。systemd 管理的任何資源都稱為 單元。有不同的 單元 類型,包括服務、設備、插座、掛载、目標等。
Systemd 通過稱為 單元 文件的配置文件管理單元。因此,為了像管理任何其他系統服務一樣管理你的 Node.js 服務器,你需要為它創建一個單元文件,這情況下將是一個服務文件。
一旦您為您的Node.js伺服器創建了一個服務文件,您就可以啟動它,啟用它在系統啟動時自動啟動,檢查其狀態,重新啟動(停止並再次啟動它)或重新載入其配置,甚至像任何其他systemd服務一樣停止它。
有關更多信息,請參見:如何使用Shell Script在Systemd中創建和運行新的服務單元
總結
A Node.js package manager is a useful tool for deploying your project in a production environment. It keeps an application alive forever and simplifies how you can control it. In this article, we reviewed four package managers for Node.js. If you have any additions or questions to ask, make use of the feedback form below to reach us.
Source:
https://www.tecmint.com/process-managers-for-node-js-applications-in-linux/