网站搜索

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


Node.js 进程管理器是一个有用的工具,可确保 Node.js 进程或脚本持续(永远)运行,并使其能够在系统启动时自动启动。

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

另请阅读:2019 年最适合开发人员的 14 个 NodeJS 框架

包管理器对于在生产环境中部署 Node.js 应用程序特别有用。在本文中,我们将回顾 Linux 系统中用于管理 Node.js 应用程序的四种进程管理器。

1.PM2.5

PM2 是一款开源、先进、功能丰富、跨平台、最受欢迎的 Node.js 生产级流程管理器,具有内置负载均衡器。它允许您列出、监控和操作所有已启动的 Nodejs 进程,并且支持集群模式。

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

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

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

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

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

2.StrongLoop PM

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

它支持应用程序监控(查看事件循环时间、CPU 和内存消耗等性能指标)、多主机部署、集群模式、零停机应用程序重启和升级、故障时自动进程重启以及日志聚合和管理。

此外,它还附带 Docker 支持,允许您将性能指标导出到 StatsD 兼容服务器,并在第 3 方控制台中查看,例如 DataDogGraphite<、Splunk 以及 Syslog 和原始日志文件。

3. 永远

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

它允许您管理(启动、列出、停止、全部停止、重新启动、全部重新启动等)Node.js 进程,并且支持监视文件更改、调试模式、应用程序日志、终止进程和退出信号定制等等。此外,它还支持多种使用选项,您可以直接从命令行传递这些选项,也可以在 JSON 文件中传递它们。

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

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

Systemd 通过称为单元 文件的配置文件来管理单元。因此,为了像管理任何其他系统服务一样管理您的 Node.js 服务器,您需要为其创建一个单元文件,在本例中将是一个服务文件。

Node.js 服务器创建服务文件后,您可以启动它、使其在系统启动时自动启动、检查其状态、重新启动(停止并再次启动)或者重新加载其配置,甚至像任何其他 systemd 服务一样停止它。

有关更多信息,请参阅:如何使用 Shell 脚本在 Systemd 中创建和运行新服务单元

概括

Node.js 包管理器是在生产环境中部署项目的有用工具。它使应用程序永远保持活力并简化了您对其的控制方式。在本文中,我们回顾了 Node.js 的四个包管理器。如果您有任何补充或疑问,请使用下面的反馈表联系我们。