部署pm2

PM2

官网:https://pm2.keymetrics.io/docs/usage/quick-start/

PM2 是一个非常流行的 Node.js 进程管理工具,用于在生产环境中运行和监控 Node.js 应用程序。它提供了多种功能,帮助开发者更好地管理和优化他们的应用程序,pm2 能做的其实有很多,比如监听文件改动自动重启,统一管理多个进程,内置的负载均衡,日志系统等等,

进程管理:PM2 可以轻松地启动、停止、重启和删除 Node.js 应用程序进程。它支持启动多个进程以利用多核 CPU,提高应用的性能和稳定性。

负载均衡:通过集群模式,PM2 可以创建多个应用实例并自动进行负载均衡,确保应用在高并发情况下仍能稳定运行。

自动重启:当应用程序崩溃或出现错误时,PM2 能自动重启应用,确保服务的高可用性。

日志管理:PM2 提供了全面的日志管理功能,可以方便地查看、合并和分析应用程序的日志信息。

监控和性能分析:PM2 内置监控功能,可以实时查看应用程序的性能指标(如 CPU 和内存使用情况)。此外,PM2 还集成了 Keymetrics,这是一个专门用于 Node.js 应用的性能监控和管理平台。

配置文件支持:PM2 支持通过 JSON 文件或 JavaScript 文件进行配置,便于管理多个应用和环境配置。

热重载:在不停止服务的情况下,PM2 可以重新加载应用代码,从而减少停机时间。

容器支持:PM2 可以与 Docker 等容器技术很好地集成,方便在容器化环境中管理 Node.js 应用。

PM2常用命令

$ npm install pm2 -g     # 命令行安装 pm2 
$ pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js 
                         # 也可以把'max' 参数传递给 start
                         # 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list               # 显示所有进程状态
$ pm2 monit              # 监视所有进程
$ pm2 logs               # 显示所有进程日志
$ pm2 stop all           # 停止所有进程
$ pm2 restart all        # 重启所有进程
$ pm2 reload all         # 0 秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0             # 停止指定的进程
$ pm2 restart 0          # 重启指定的进程
$ pm2 startup            # 产生 init 脚本 保持进程活着
$ pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0           # 杀死指定的进程
$ pm2 delete all         # 杀死全部进程

基本使用

1.安装

npm install pm2 -g

2.基本使用

这儿只是http举个例子

import http from 'node:http'

http.createServer((req, res) => {
    res.writeHead(200)
    res.end('cluster is running')
}).listen(6000,()=>{
    console.log('http://127.0.0.1:6000')
})

1.启动一个服务 或者多个服务都是可以的

pm2 start app.js xx.js bb.js ......

2.查看当前正在运行的node进程

pm2 list

image.png

3.停止一个node进程
pm2 stop [process_id]

image.png

4.重启服务

pm2 restart [process_id]

5.删除服务

pm2 delete [process_id]
pm2 delete all

6.开机自启

linux

  1. 先运行一个脚本如 pm2 start app.js
  2. 保存进程信息 pm2 save
  3. 生成启动脚本 pm2 startup
  4. 开机自启命令 pm2 startup systemd
  5. 保存自启命令 pm2 save
  6. 删除自动启动 pm2 unstartup systemd
  7. 保存删除启动 pm2 save

windows

  1. 安装windows自动启动包 npm install pm2-windows-startup -g
  2. 安装自启脚本 pm2-startup install
  3. 启动服务 pm2 start xxxx
  4. 保存自启服务 pm2 save
  5. 删除自动启动 pm2-startup uninstall

3.日志

可以收集各种日志反馈调试问题

pm2 log

 

4.监控面板

可以实时监控所有由 PM2 管理的进程。这个监控面板提供了丰富的实时数据,包括 CPU 使用率、内存使用情况、重启次数、日志输出等信息

实时监控:在开发和生产环境中实时监控应用程序的性能,及时发现和处理异常。

调试和诊断:查看日志输出,帮助调试和诊断问题。

资源管理:监控资源使用情况,优化应用程序的性能和资源分配。

pm2 monit

image.png

5.负载均衡

pm2 start index.js -i [max | number]

可以指定经线程数量,也可以设置max直接设置最高

image.png

6.配置文件

调用下面命令在项目中生成配置文件 ecosystem.config.js 或者手动创建也可以

pm2 init simple

ecosystem.config.js

apps: [{ 
    name: "my-app", 
    script: "./app.js", 
    instances: 4, 
    exec_mode: "cluster", 
    watch: true, max_memory_restart: "200M", 
    env: { NODE_ENV: "development", PORT: 3000 }, 
    env_production:{ NODE_ENV: "production", PORT: 8080 } 
}]

apps:一个包含应用程序配置对象的数组,每个对象代表一个应用程序。

name:应用程序名称,用于在 PM2 中标识。

script:要启动的脚本文件路径。

instances:实例数量,可以是具体数字或者 max,以利用所有可用的 CPU 核心。

exec_mode:执行模式,常用值有 fork(默认)和 cluster

watch:启用文件监视,如果文件有变化,应用会自动重启。

max_memory_restart:当内存使用超过指定值时自动重启应用。

env:普通环境变量配置。

env_production:生产环境变量配置,使用 pm2 start ecosystem.config.js --env production 命令启动时生效。

启用配置文件

pm2 start ecosystem.config.json #这样就可以了 不用在单独指定js文件了
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

使用pm2 启动Nestjs项目

先对nestjs进行打包

 "scripts": {
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 启动项目:

pm2 start --name nestjs-chat dist/main.js

pm2不能直接启动ts项目,所以为什么上面需要先打包后再启动,如果需要启动ts项目,可以参考以下文章:

 pm2 启动 Node + TS 项目_pm2 ts-node-CSDN博客

 使用pm2 + ts-node部署koa+ts项目产生的问题_pm2配置ts-node-CSDN博客

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值