如何使用 PM2 进行持久化进程守护

在前端的项目中,我们通常使用 Node.js 来实现一些基础设施的工作,比如构建工具,后端服务等等。然而,在实现这些工作时,我们往往需要长时间运行的进程来支持我们的工作,比如 webpack-dev-server,nodemon 等等。这些进程需要在我们的项目启动后一直运行,不能容易地被关闭或者退出。因此,我们需要持久化的进程守护工具来保证这些进程始终运行,并且能够在异常情况下自动重启进程。PM2 就是这样一款工具。

什么是 PM2

PM2 是一个 Node.js 进程管理工具,在 Node.js 应用服务器部署中简化了许多繁琐的任务。主要功能包括进程守护,多进程负载均衡,日志管理,服务器监控等等。PM2 最常用的功能是进程守护和自动重启,这正好满足了前端项目中持久化进程守护的需求。

如何安装 PM2

PM2 使用 npm 包管理器进行管理,因此我们可以使用以下命令进行安装:

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

如何使用 PM2 进行进程守护

在我们的前端项目中,我们通常需要使用到以下两个命令:

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

这里我们以一个基于 Vue CLI 创建的前端项目为例子,来看看如何使用 PM2 进行进程守护。

首先,我们需要在项目根目录下创建一个 pm2.json 文件。在这个文件中,我们需要指定运行 npm start 和 npm run dev 时使用的命令,以及项目的根目录和日志等信息。

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

其中,name 指定了项目名称,script 指定了运行命令,args 指定了运行命令时的参数,在这里我们使用了 npm run start。watch 表示当文件变更时 PM2 是否可以自动重启进程。ignore_watch 则指定了一些不需要被监控的文件夹,这里我们忽略了 node_modules。最后,env 中可以设置一些环境变量。

创建完 pm2.json 文件之后,我们可以通过以下命令来启动 PM2 进行进程守护:

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

这个时候,我们可以使用 pm2 list 命令来查看 PM2 管理的进程列表。我们也可以使用 pm2 log my-project 来查看 my-project 进程的日志信息。如果我们需要停止一个进程,可以使用 pm2 stop my-project,而如果要删除一个进程,则可以使用 pm2 delete my-project。

当然,有时候我们可能需要同时开启多个进程来处理请求,这样可以极大地提高我们项目的性能。PM2 也提供了多进程负载均衡的功能,这里就不再赘述了。

如何在 PM2 中开启自动重启

PM2 的一个重要功能就是自动重启,当一个进程异常退出时,PM2 就会自动重启它。为了开启自动重启功能,我们需要在 pm2.json 文件中添加以下配置:

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

其中,restart_delay 指定了每次异常退出后要等待多长时间才重启进程。max_restarts 则指定了当一个进程出现异常退出时,PM2 最多尝试重启几次。min_uptime 则指定了当一个进程启动后要保持运行的最少时间。

如何在 PM2 中开启守护进程

PM2 默认情况下是在前台启动进程的,这意味着当我们关闭终端窗口时,PM2 管理的进程也会随之退出。为了让 PM2 运行在守护模式下,我们需要使用以下命令:

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

在这种模式下,当我们关闭终端窗口时,PM2 仍然会运行并守护我们的进程。

总结

在前端项目中,我们常常需要运行一些长期进行的进程来支持我们的工作。PM2 是一个功能强大的进程管理工具,它可以帮助我们实现进程守护和自动重启等功能。通过 PM2,我们可以让我们的进程始终运行,并且保证在异常情况下自动重启进程。在使用 PM2 时,我们需要注意一些配置参数的使用,比如启动命令,日志信息,自动重启和守护模式等等。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/653f5f557d4982a6eb8eb959


猜你喜欢

  • 响应式设计如何应对文本折行问题

    在响应式设计中,文本折行是一项常见问题。虽然在不同设备上文本长度不同,但合适的文本折行可以使界面更美观、易读,提高用户体验。本文将探讨响应式设计中的文本折行以及如何解决相关问题。

    1 年前
  • ES10 中的 Symbol 对象详解

    Symbol 是 ES6 中新增的一种数据类型,其主要作用是用来表示一个独一无二的标识符,常用于对象属性的名称、迭代器方法等场景。ES10 中增加了一些新的 API,本文将详细介绍 Symbol 的用...

    1 年前
  • 如何在 LESS 中使用 interpolation?

    在编写 LESS 样式时,使用 interpolation 可以方便地在样式中插入动态变量,从而实现更为灵活的样式控制。下面就来介绍一下如何在 LESS 中使用 interpolation。

    1 年前
  • Cypress 如何处理多种浏览器的支持?

    介绍 Cypress 是一个用于前端自动化测试的工具,它提供了一种高效而又易用的方式来编写和运行测试用例。其中一个重要的特点就是兼容多种浏览器,这使得我们可以在不同的浏览器上测试我们的应用程序,以便发...

    1 年前
  • 在 Ruby on Rails 中如何编写 RESTful API

    什么是 RESTful API RESTful API 是一种设计风格,用来构建 Web 应用程序中的 API。它基于 HTTP 协议,遵循一些约定,使得开发者可以快速构建出易用的 API,同时也方便...

    1 年前
  • Webpack+SASS+Sourcemaps 实现开发时的浏览器端错误调试

    在前端开发过程中,我们经常需要进行调试和错误处理。在浏览器中调试JavaScript和CSS代码是一种基本技能,然而在开发过程中,当我们遇到复杂的问题时却常常会陷入无从下手的困境。

    1 年前
  • 如何使用 ES9 的 Array.prototype.sort() 进行排序

    如何使用 ES9 的 Array.prototype.sort() 进行排序 在前端开发中,我们经常需要对数组进行排序操作。在 ES5 中,我们可以使用 Array.prototype.sort() ...

    1 年前
  • React Native 项目 Android 打包全流程讲解

    React Native 是一款跨平台的 Web 开发框架,开发者可以通过 React Native 打造出原生性能的 Android 和 iOS 应用。本篇文章将详细讲解 React Native ...

    1 年前
  • ES8 中生成器函数的简单应用

    介绍 ES2017(或称为ES8)中引入了生成器函数(Generator Function),它可以让开发者更加方便地处理异步任务。生成器函数是一种可以通过不断暂停和恢复执行来取得多个值的函数。

    1 年前
  • ES6 中的 Symbol 对象使用详解

    在 ES6 (ECMAScript 2015)中,加入了一个全新的数据类型——Symbol(符号)。Symbol 不同于之前的数据类型,它是一种类似于字符串的原始数据类型,唯一的区别是 Symbol ...

    1 年前
  • 解决 Docker 容器无法 Ping 通局域网内其他设备的问题

    在使用 Docker 构建应用程序时,我们可能会遇到容器无法与局域网内其他设备通信的问题。这通常是因为 Docker 默认使用了自己的网络,导致无法与主机或其他设备在同一局域网内进行通信。

    1 年前
  • 如何利用 Express.js 实现 RESTful API

    RESTful API 是一种基于 HTTP 协议的 web 应用程序接口设计风格,其主要目标是提高 web 应用的可扩展性、灵活性和可重用性。在前端开发中,我们经常需要利用 Express.js 来...

    1 年前
  • Mocha 测试框架中超时的处理

    在编写前端测试用例时,经常会遇到一些异步测试用例,比如网络请求、定时器等情况,这时候就需要使用 Mocha 测试框架来处理这些异步测试用例。但是,有时候这些异步测试用例可能会因为超时而挂掉,这就需要我...

    1 年前
  • ES11 中怎么使用 top-level-await

    top-level-await 是 ES11 中新增的一个语法特性,它可以让我们在模块的顶层使用 await 关键字来处理异步操作,这意味着我们不再需要将异步操作包装在函数中,使得代码更加简洁和可读性...

    1 年前
  • 如何优化 Babel 编译器性能?

    Babel 是一个 JavaScript 代码转换器,可以将 ECMAScript 2015+ 的代码转换为向后兼容的版本,以便在当前和旧版浏览器或其他环境中运行。

    1 年前
  • 异步 Js 服务器推送 SSE(Server-Sent Events)通信

    在前端开发中,我们经常需要和服务器进行通信,比如向服务器发送请求获取数据、提交表单等等。通常情况下,这种通信都是客户端向服务器发送请求,服务器返回响应的模式。但在某些情况下,我们需要实现服务器主动向客...

    1 年前
  • Hapi 框架对 Cookie 的处理方法详解

    前言 在我们日常的网页使用中,Cookie 已经成为了不可缺少的一部分。Cookie 可以存储一些用户的信息,例如登录状态、用户偏好等等。而对于前端开发者来说,如何在程序中使用 Cookie 就成为了...

    1 年前
  • Deno 应用中使用 JWT 进行鉴权管理

    Deno 是一个新的 JavaScript 和 TypeScript 运行时环境,相较于 Node.js 来说,Deno 更安全、稳定、轻量级。因此,越来越多的前端开发者开始使用 Deno 开发后端应...

    1 年前
  • Fastify 日志记录 - 如何记录应用程序的日志

    Fastify 日志记录 - 如何记录应用程序的日志 在前端的开发中,日志记录是一个非常重要的方面,它可以帮助开发者了解应用程序的运行情况以及出错原因等。在本文中,我们将介绍一个快速的 Node.js...

    1 年前
  • 解决 Mongoose 指定默认值后无法更新的问题

    背景 在前端开发过程中,常常需要使用到 MongoDB 数据库。而在 Node.js 中,最常用的 MongoDB 驱动是 Mongoose。在使用 Mongoose 的过程中,我们经常会遇到一些问题...

    1 年前

相关推荐

    暂无文章