在前端的项目中,我们通常使用 Node.js 来实现一些基础设施的工作,比如构建工具,后端服务等等。然而,在实现这些工作时,我们往往需要长时间运行的进程来支持我们的工作,比如 webpack-dev-server,nodemon 等等。这些进程需要在我们的项目启动后一直运行,不能容易地被关闭或者退出。因此,我们需要持久化的进程守护工具来保证这些进程始终运行,并且能够在异常情况下自动重启进程。PM2 就是这样一款工具。
什么是 PM2
PM2 是一个 Node.js 进程管理工具,在 Node.js 应用服务器部署中简化了许多繁琐的任务。主要功能包括进程守护,多进程负载均衡,日志管理,服务器监控等等。PM2 最常用的功能是进程守护和自动重启,这正好满足了前端项目中持久化进程守护的需求。
如何安装 PM2
PM2 使用 npm 包管理器进行管理,因此我们可以使用以下命令进行安装:
npm install -g pm2
如何使用 PM2 进行进程守护
在我们的前端项目中,我们通常需要使用到以下两个命令:
npm start npm run dev
这里我们以一个基于 Vue CLI 创建的前端项目为例子,来看看如何使用 PM2 进行进程守护。
首先,我们需要在项目根目录下创建一个 pm2.json 文件。在这个文件中,我们需要指定运行 npm start 和 npm run dev 时使用的命令,以及项目的根目录和日志等信息。
// javascriptcn.com 代码示例 { "name": "my-project", "script": "npm", "args": "run start", "watch": true, "ignore_watch": ["node_modules"], "env": { "NODE_ENV": "production", "PORT": 8080 } }
其中,name 指定了项目名称,script 指定了运行命令,args 指定了运行命令时的参数,在这里我们使用了 npm run start。watch 表示当文件变更时 PM2 是否可以自动重启进程。ignore_watch 则指定了一些不需要被监控的文件夹,这里我们忽略了 node_modules。最后,env 中可以设置一些环境变量。
创建完 pm2.json 文件之后,我们可以通过以下命令来启动 PM2 进行进程守护:
pm2 start pm2.json --name my-project
这个时候,我们可以使用 pm2 list 命令来查看 PM2 管理的进程列表。我们也可以使用 pm2 log my-project 来查看 my-project 进程的日志信息。如果我们需要停止一个进程,可以使用 pm2 stop my-project,而如果要删除一个进程,则可以使用 pm2 delete my-project。
当然,有时候我们可能需要同时开启多个进程来处理请求,这样可以极大地提高我们项目的性能。PM2 也提供了多进程负载均衡的功能,这里就不再赘述了。
如何在 PM2 中开启自动重启
PM2 的一个重要功能就是自动重启,当一个进程异常退出时,PM2 就会自动重启它。为了开启自动重启功能,我们需要在 pm2.json 文件中添加以下配置:
// javascriptcn.com 代码示例 { "name": "my-project", "script": "npm", "args": "run start", "watch": true, "ignore_watch": ["node_modules"], "env": { "NODE_ENV": "production", "PORT": 8080 }, "restart_delay": 1000, "max_restarts": 5, "min_uptime": "10s" }
其中,restart_delay 指定了每次异常退出后要等待多长时间才重启进程。max_restarts 则指定了当一个进程出现异常退出时,PM2 最多尝试重启几次。min_uptime 则指定了当一个进程启动后要保持运行的最少时间。
如何在 PM2 中开启守护进程
PM2 默认情况下是在前台启动进程的,这意味着当我们关闭终端窗口时,PM2 管理的进程也会随之退出。为了让 PM2 运行在守护模式下,我们需要使用以下命令:
pm2 start pm2.json --name my-project --no-daemon
在这种模式下,当我们关闭终端窗口时,PM2 仍然会运行并守护我们的进程。
总结
在前端项目中,我们常常需要运行一些长期进行的进程来支持我们的工作。PM2 是一个功能强大的进程管理工具,它可以帮助我们实现进程守护和自动重启等功能。通过 PM2,我们可以让我们的进程始终运行,并且保证在异常情况下自动重启进程。在使用 PM2 时,我们需要注意一些配置参数的使用,比如启动命令,日志信息,自动重启和守护模式等等。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653f5f557d4982a6eb8eb959