使用 PM2 管理 Node.js 应用的最佳实践

前言

Node.js 是一种非常流行的服务器框架,也是前端技术栈中不可缺少的一环。随着业务的日益复杂,我们需要保证 Node.js 应用的高可用性和稳定性,而这正是 PM2 (Process Manager 2) 的用武之地。

本文将介绍如何使用 PM2 管理 Node.js 应用,并为读者提供最佳实践、深度解析以及示例代码,旨在帮助读者更好地理解 PM2 的特性和使用。

什么是 PM2?

PM2 是一款基于 Node.js 的进程管理工具,可以用来管理 Node.js 应用的启动、停止、重启等操作。在实际应用中,我们常常需要开启多个 Node.js 应用进程来处理请求,这时就需要使用 PM2 来进行进程的管理。

安装 PM2

自然,让我们先来安装 PM2。使用以下命令即可:

--- ------- -- ---

PM2 的重要特性

集群模式

在单核服务器上运行多个进程显然是没有意义的。不过在多个 CPU 核心服务器上,由于 Node.js 是单线程运行的,所以我们需要运行多个进程来充分利用 CPU 资源。

PM2 提供了集群模式,这是管理多个 Node.js 进程的理想方式。在集群模式下,PM2 会自动启动多个子进程,并在其中分配请求。

我们可以使用以下命令来创建集群:

--- ----- ------ -- -

其中 app.js 表示要启动的应用程序的入口文件,-i 4 代表要创建 4 个进程。使用该命令启动,并在 PM2 Web 界面上查看,会发现已经有四个进程在运行。当然,也可以使用 PM2 的命令来停止所有进程:

--- ------ ---

多项目管理

PM2 能够管理多个项目,这对于多个 Node.js 应用的管理是非常方便的。

我们可以使用以下命令来启动多个项目:

--- ----- ------ -------- -------
--- ----- ------ -------- -------

上述命令会创建两个新的进程,其中 --name 是为进程命名,以便更容易地管理。我们也可以使用 --log 参数将各自进程的日志分开,并单独进行管理。

后台运行

在实际生产环境中,我们常常需要将 Node.js 进程作为守护进程运行,以便在 SSH 会话结束时不能终止它。

PM2 提供了后台运行的功能,只需使用以下命令即可:

--- ----- ------ --

其中 -d 表示以守护进程方式运行应用程序。这可以确保即使 SSH 会话结束,应用程序也会继续运行。

进程监控

其中最重要的特性之一是进程监控功能。在 PM2 的 Web 界面上,您可以查看单个进程或整个群集的健康状况以及实时日志。当某个进程出现故障时,您可以通过 Web 界面轻松地重新启动它。

远程控制

如果您不想使用 PM2 的 Web 界面来管理 Node.js 进程,PM2 还支持远程控制功能。只需使用以下命令即可:

--- ------ ---------- -----
--- ------ ---------- ------
--- ------ ---------- -------

其中,production 是已配置好的环境名称。您可以将这些命令替换为其他 PM2 命令(如 npm start),并使用 SSH 进行部署操作。

回滚

出现问题时立即回滚非常重要。PM2 支持版本控制和回滚功能。默认情况下,PM2 会保存最后 30 次修改的版本。可以使用以下命令来回滚到以前的版本:

--- ------ ---- -------- -

其中 1 是要回滚的版本号,PM2 只会保存最后 30 个版本。此外,PM2 还支持自定义回滚策略,以进行较深层次的操作。

示例代码

以下是一个简单的 Node.js Express 应用程序的示例代码:

----- ------- - ------------------
----- --- - ---------

------------ -------- ----- ---- -
  --------------- --------
--

---------------- -------- -- -
  -------------------- --- --------- -- ---- -------
--

在我们的工作目录中,使用以下命令来安装依赖:

--- ------- -------

然后,使用以下命令启动我们的示例应用程序:

--- ----- ------ ------ -----

在 PM2 中查看进程列表,您将看到 myapp 已经在运行。若要停止该进程,使用以下命令:

--- ---- -----

结论

PM2 是管理 Node.js 应用程序的强大工具。本文介绍了 PM2 的特点、最佳实践和示例代码,希望能帮助初学者快速上手,并使经验丰富的读者更好地掌握 PM2 的实用技能。

最后,请注意在生产环境中使用 PM2 时要小心,保持配置的稳定性和持续监控。祝您的 Node.js 应用程序越来越优秀!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/673418920bc820c582467e20