Node.js 应用程序在 Linux 中的 4 个进程管理器

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.

它允许您监控正在运行的服务,并促进常见的系统管理任务(例如在失败时重新启动、停止、重新加载配置而无需停机、修改环境变量/设置、显示性能指标等等)。它还支持应用程序日志记录、集群和负载平衡,以及许多其他有用的进程管理功能。

阅读更多: 2019年开发人员最佳的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,并带有内置的负载均衡器。它允许您列出、监视和处理所有已启动的Node.js进程,并支持集群模式。

Install PM2 to Run Nodejs Apps in Linux

它支持应用程序监控:提供了一种简单的方式来监视应用程序的资源(内存和CPU)使用情况。它通过允许您通过进程文件配置和调整每个应用程序的行为来支持您的进程管理工作流程(支持的格式包括Javascript、JSON和YAML)。

应用程序日志在生产环境中始终至关重要,PM2在这方面使您能够轻松管理应用程序的日志。它提供了不同的方式和格式来处理和显示日志。您可以实时显示日志,刷新它们,并在需要时重新加载它们。

重要的是,PM2支持启动脚本,您可以配置它们以在预期或意外的机器重启时自动启动您的进程。它还支持当当前目录或其子目录中的文件被修改时自动重新启动应用程序。

此外,PM2具有模块系统,允许用户为Nodejs进程管理创建自定义模块。例如,您可以创建一个用于日志轮换模块或负载平衡的模块,等等。

最后但并非最不重要的是,如果您使用Docker容器,PM2允许进行容器集成,并提供API系统,允许您以编程方式使用它。

2. StrongLoop PM

StrongLoop PM也是一个开源的,用于Node.js应用程序的高级生产进程管理器,具有内置的负载平衡,就像PM2一样,并且可以通过命令行或图形界面使用。

StrongLoop PM Process Manager for Nodejs

CPU 和内存消耗),多主机部署,集群模式,零停机应用程序重启和升级,失败时自动进程重启,以及日志聚合和管理。

此外,它还提供了Docker支持,允许您将性能指标导出到与 StatsD 兼容的服务器,并在第三方控制台上查看,例如DataDogGraphiteSplunk以及Syslog和原始日志文件。

3. Forever

Forever是一个开源的、简单且可配置的命令行界面工具,用于连续运行给定的脚本(永远)。它适用于运行较小规模的Node.js应用程序和脚本。您可以通过命令行或将其嵌入到您的代码中两种方式使用forever

Forever Run Scripts Continuously

它允许您管理(启动、列出、停止、全部停止、重新启动、全部重新启动等)Node.js进程,并支持监视文件更改、调试模式、应用程序日志、杀死进程和退出信号自定义等等。此外,它支持几种用法选项,您可以直接从命令行传递或将它们传递到 JSON 文件中。

4. SystemD – 服务和系统管理器

在 Linux 中,Systemd 是一个守护程序,管理系统资源,如进程和文件系统的其他组件。由 Systemd 管理的任何资源都称为单元。有不同类型的单元,包括服务、设备、套接字、挂载、目标和许多其他单元。

Systemd 通过一个称为单元文件的配置文件来管理单元。因此,为了像管理其他系统服务一样管理您的 Node.js 服务器,您需要为其创建一个单元文件,这种情况下将是一个服务文件。一旦您为 Node.js 服务器创建了一个服务文件,您就可以启动它,使其在系统引导时自动启动,检查其状态,重新启动(停止并再次启动)或重新加载其配置,甚至像任何其他 Systemd 服务一样停止它。

一旦您为您的Node.js服务器创建了一个服务文件,您就可以启动它,启用它在系统启动时自动启动,检查其状态,重启(停止并重新启动它)或重新加载其配置,甚至像任何其他systemd服务一样停止它。

更多信息,请参阅:如何使用Shell脚本创建和运行新的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/