我是靠谱客的博主 知性服饰,最近开发中收集的这篇文章主要介绍【运维】PM2入门,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PM2

一、PM2作用

  • 进程守护,系统崩溃自动重启
  • 启动多线程,充分利用CPU和内存
  • 自带日志记录功能

二、 安装

npm install pm2 -g
pm2 --version

三、快速使用

简单的启动一个文件,使用pm2 start命令
例如:

pm2 start index.js

在npm项目中,可以在package.json的script脚本中加入pm2 start命令,
例如:

{
  "name": "pm2-test",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cross-env": "^5.2.0",
    "nodemon": "^1.18.9"
  }
}

然后就会发现,项目跑起来了,且控制台的控制权空置出来了。
在这里插入图片描述

四、常用命令

pm2 start <FileName>/<ConfigName>              		# 可以跟文件,或者配置文件
pm2 list											# 可以看到进程列表
pm2 restart <AppName>/<id>							# 手动重启
pm2 stop <AppName>/<id>								# 停止进程
pm2 delete <AppName>/<id>							# 删除进程
pm2 info <AppName>/<id>								# 查看基本信息
pm2 log <AppName>/<id>								# 日志
pm2 monit <AppName>/<id>							# 当前进程cpu、内存信息

五、日志功能

我们直接在代码里面加入console.log或者console.error
在这里插入图片描述
然后重启一下pm2进程,并查看log日志

pm2 restart app
pm2 log app

在这里插入图片描述
可以看到pm2已经为我们创建了两个日志文件 app-out.log和app-error.log。
此时继续访问服务,控制台会实时打印出新的日志
在这里插入图片描述
同理我们可以使用cat命令直接进入这两个文件查看日志。

使用

pm2 monit

也可以进入性能监测的页面,看到日志记录,我们也可以在打开这个页面的时候去访问服务,进行调试。

在这里插入图片描述

六、进程守护

为了模拟程序出错,pm2自动重启,我们修改一下测试代码
在这里插入图片描述
在里面加入了一个抛错的逻辑,并触发。
在这里插入图片描述
明显可以在日志中看到出现了错误信息,但是重新访问正确的url,会发现服务依然正常,这就是pm2出现错误后给我们自动重启。

七、配置

我们可以先看一下当前app这个进程的默认设置,使用pm2 info app命令
在这里插入图片描述

在项目目录中加入
pm2.conf.json

{
    "apps": {
        "name": "pm2-test-server",
        "script": "app.js",
        "watch": true,
        "ignore_watch": [
            "node_modules",
            "logs"
        ],
        "error_file": "logs/err.log",
        "out_file": "logs/out.log",
        "log_data_format": "YYYY-MM-DD HH:mm:ss"
    }
}

然后修改package.json中的执行脚本,使用pm2 start执行配置文件

"scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "dev": "cross-env NODE_ENV=dev nodemon app.js",
    "prd": "cross-env NODE_ENV=production pm2 start pm2.conf.json"
  },

停止并删除原来的app进程

pm2 stop app
pm2 delete app

npm run prod启动新的脚本命令
在这里插入图片描述
进程名字已经修改了
在这里插入图片描述
日志的格式也发生了改变,配置文件已经生效。

八、多进程

多进程启动可以有效利用服务器内存以及多核cpu。只需要在pm2配置文件中加入instance的配置,对应的值是希望开启的线程的个数。
pm2.conf.json

{
    "apps": {
        "name": "pm2-test-server",
        "script": "./app.js",
        "watch": true,
        "ignore_watch": [
            "node_modules",
            "logs"
        ],
        "instances": 4,
        "error_file": "logs/err.log",
        "out_file": "logs/out.log",
        "log_date_format": "YYYY-MM-DD HH:mm:ss"
    }
}

再次删除之前的进程,重新开启进程,会发现现在一个项目被分到多个进程执行
在这里插入图片描述

最后

以上就是知性服饰为你收集整理的【运维】PM2入门的全部内容,希望文章能够帮你解决【运维】PM2入门所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部