PM2 如何实现 Node.js 应用的自动启动和运行

阅读时长 5 分钟读完

前言

在开发 Node.js 应用时,我们常常需要将其部署到服务器并保持运行状态,而这时候我们可能会选择使用 PM2 这样的进程管理工具来处理这些事情。PM2 可以帮助我们方便地启动、停止、重新启动、更新以及监测我们的应用,并且它还可以自动地保证我们的应用在发生故障或服务器重启后能够自动重启。

本文将详细介绍如何使用 PM2 来管理我们的 Node.js 应用,包括如何实现自动启动和运行,以及如何在应用发生故障时进行故障转移。

PM2 简介

PM2 是一个开源的进程管理器,可以帮助我们简化 Node.js 应用的部署、运行和监测。它提供了丰富的功能,包括:

  • 自动重启:PM2 会在应用崩溃或服务器重启时自动重启应用。不会丢失请求。
  • 守护进程:PM2 可以将应用运行在后台,并且会自动重启。
  • 负载均衡:PM2 可以通过多进程模式来运行同一个应用,从而实现负载均衡。
  • 集群模式:PM2 可以简单地配置和管理多个 Node.js 应用实例。
  • 进程监测:PM2 可以监测进程的状态,并将实时信息输出到控制台。
  • 进程报警:PM2 可以进行进程报警,例如,当应用崩溃时,PM2 会通过邮件或者 Slack 发送通知。
  • 热重载:PM2 可以在应用运行的时候重新加载修改后的 JavaScript/CSS/HTML 文件,从而避免重启应用。

如何使用 PM2 来管理 Node.js 应用

安装 PM2

使用 npm 安装 PM2。

启动应用

使用 PM2 启动一个 Node.js 应用,可以使用以下命令:

其中,app.js 是我们要启动的 Node.js 应用的入口文件。执行以上命令后,PM2 会自动启动你的应用程序,并将其运行在一个守护进程中,你可以使用以下命令来查看 PM2 中正在运行的应用:

停止应用

如果需要停止某个应用,可以使用以下命令:

其中,app 是应用的名称。

重新启动应用

如果需要重新启动某个应用,可以使用以下命令:

更新应用

当我们修改了应用代码后,需要重新启动应用,有时候我们可能会通过以下命令来实现:

但是,这种方式会导致应用在停止和重新启动之间出现短暂的停顿。如果你需要实现热重载,可以使用以下命令:

监测应用状态

使用 PM2 可以实时监测应用的状态和日志,可以通过以下命令来查看应用的实时日志:

实现自动启动和运行

PM2 可以非常方便地实现自动启动和运行,只需要使用以下命令即可:

这个命令将在系统启动时自动运行 PM2。但是,这个命令只需要执行一次,不需要每次启动应用都执行。

实现故障转移

当我们的应用出现故障时,可以通过 PM2 实现故障转移,将应用切换到另外一个实例来确保应用的可用性。为了实现故障转移,我们需要在 PM2 中启动多个 Node.js 应用实例,并且可以通过负载均衡实现请求的转发。以下是实现故障转移的详细步骤:

  1. 启动多个 Node.js 应用实例。

    这个命令会启动 4 个 Node.js 应用实例。

  2. 启动负载均衡。

  3. 配置负载均衡。

    PM2 默认使用 cluster 模式启动应用,可以在应用入口文件中添加以下代码来启用 cluster 模式:

    -- -------------------- ---- -------
    --- ------- - -------------------
    --- -- - --------------
    
    -- ------------------ -
      --- ---- - - -- - - ----------------- ---- -
        ---------------
      -
      ------------------ ---------------- ----- ------- -
        ------------------- - - ------------------ - - -------
        ---------------
      ---
    - ---- -
      -----------------
    -
    展开代码

    在应用的入口文件中,我们通过 os.cpus().length 来获取 CPU 的核心数量,然后使用 cluster.fork() 来启动相应的进程。当某个子进程崩溃后,cluster 模块会重新启动一个新的子进程。

  4. 验证负载均衡。

    可以使用以下命令来验证负载均衡是否正常工作:

    此时,应该会看到应用返回的结果有 4 种不同的 pid 值,表示请求经过负载均衡后,被分发到了不同的实例中执行。

结语

本文介绍了如何使用 PM2 来管理 Node.js 应用,并且详细讲述了如何实现自动启动、运行和故障转移等功能。掌握这些知识,可以帮助我们更好地管理和维护 Node.js 应用,提升应用的可用性和稳定性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67ceb07de46428fe9e93c5b6

纠错
反馈

纠错反馈