Node进程管理工具-pm2的使用方法

1. 什么是pm2

PM2是一款开源的Node.js进程管理工具,可以帮助我们更加方便地管理Node应用,包括启动、停止、重启等操作。同时,PM2还支持应用日志的管理、自动生成进程守护、负载均衡等功能,大大提升了Node应用的稳定性和可靠性。

2. 安装pm2

2.1 全局安装

通过npm全局安装pm2,可以方便地在终端使用pm2命令。

npm install -g pm2

2.2 本地安装

如果不想在全局安装pm2,也可以在项目中本地安装。

npm install pm2 --save-dev

本地安装的pm2可以在package.json中配置scripts字段,方便进行脚本管理。

3. 使用pm2

使用pm2可以通过命令行进行操作,也可以在应用程序中通过pm2-api模块进行管理。

3.1 命令行操作

3.1.1 启动应用

通过pm2 start命令启动Node应用。

pm2 start app.js

默认情况下,启动的应用将会自动生成守护进程,并以集群的形式在后台运行。

3.1.2 停止应用

通过pm2 stop命令停止运行中的Node应用。

pm2 stop app.js

3.1.3 重启应用

通过pm2 restart命令重启运行中的Node应用。

pm2 restart app.js

3.1.4 查看应用状态

通过pm2 list命令查看应用程序的运行状态和运行情况。

pm2 list

3.2 API操作

通过pm2-api提供的api,可以在Node应用中方便地进行PM2的管理。

3.2.1 安装pm2-api

通过npm安装pm2-api。

npm install pm2-api --save

3.2.2 初始化pm2-api

在Node应用中初始化pm2-api,并传入pm2实例。

const pm2 = require('pm2');

const pm2api = require('pm2-api');

const api = pm2api({ pm2: pm2 });

3.2.3 使用pm2-api

使用pm2-api可以方便地获取应用程序状态、获取应用程序日志等。

api.getEnv({ name: 'app' }, function (err, data) {

if (err) { console.log(err); }

console.log(data);

});

4. pm2的一些实用功能

4.1 应用日志管理

通过pm2可以方便地查看应用生成的日志文件,并且可以实时查看日志。

4.1.1 查看应用日志

通过pm2 log命令可以查看所有应用生成的日志文件。如果只想查看单个应用,可以通过指定应用名进行筛选。

pm2 log app-name

4.1.2 重新启动应用日志

如果应用的日志文件过大,可以通过pm2 flush命令重新启动应用日志。

pm2 flush

4.2 代码热更新

通过pm2可以实现应用程序的热更新,无需重启应用程序,即可实现代码更新。

4.2.1 配置文件

在应用程序根目录下创建pm2.json配置文件。

{

"apps": [{

"name": "app",

"script": "app.js",

"watch": true,

"ignore_watch": [

"node_modules",

"logs"

]

}]

}

参数说明:

name:应用程序名称

script:应用程序启动脚本

watch:是否自动重启应用程序

ignore_watch:忽略的文件或目录

4.2.2 运行应用程序

通过pm2 start命令运行应用程序,此时会启动应用程序,并且在应用程序根目录下自动生成pm2.pid文件和pm2.log日志文件。

pm2 start pm2.json

4.2.3 修改代码并保存

修改应用程序代码并保存,pm2会自动重启应用程序,并加载新代码。

4.3 配置环境变量

通过pm2可以方便地配置应用程序环境变量,避免在部署时手动修改。

4.3.1 修改配置文件

在pm2.json文件中添加env字段,将环境变量配置在该字段中。

{

"apps": [{

"name": "app",

"script": "app.js",

"watch": true,

"ignore_watch": [

"node_modules",

"logs"

],

"env": {

"NODE_ENV": "production",

"API_KEY": "secret-key"

}

}]

}

4.3.2 使用环境变量

在应用程序中通过process.env访问环境变量。

const NODE_ENV = process.env.NODE_ENV;

const API_KEY = process.env.API_KEY;

5. pm2常见问题

5.1 守护进程自动退出

如果守护进程在启动后自动退出,可能是应用程序抛出了异常或错误,需要查看pm2日志文件查找问题。

5.2 端口占用问题

如果在启动应用程序时提示端口占用,可以通过pm2 stop命令停止正在运行的应用程序,然后重新启动。

5.3 配置文件错误

如果pm2无法读取pm2.json配置文件,可能是pm2.json配置文件格式错误或文件路径错误,需要检查pm2.json文件路径和格式是否正确。

6. 总结

通过本文的介绍,我们了解到了pm2的基本使用方法和一些实用功能,pm2可以帮助我们更加方便地管理Node.js应用程序,提高Node.js应用程序的稳定性和可靠性。