PM2 对 Node 项目进行线上部署与配置
PM2 对 Node 项目进行线上部署与配置
pm2 是一个带有负载均衡功能的 Node 应用的进程管理器。
1. pm2 主要特点
- 内建负载均衡(使用Node cluster 集群模块)
- 保持后台运行
- 进程守护,系统崩溃后自动重启
- 启动多进程,充分利用CPU和内存
- 自带日志记录功能
- 控制台检测
- 提供 HTTP API
2. pm2 安装及常用命令
安装
$ npm install pm2 -g // 全局安装
$ pm2 --version // 查看版本
pm2 命令
启动(入口文件为app.js, 配置文件为pm2.conf.json):
// 直接启动
$ pm2 start app.js
// 通过配置文件启动
$ pm2 start app.js
查看启动历史:
$ pm2 list
重启:
修改代码后需要执行:
$ pm2 restart <AppName>/<id>
<!-- <AppName>/<id> 可通过 pm2 list 查看-->
停止进程(可重新启动)
$ pm2 stop <AppName>/<id>
删除进程(不可重新启动)
$ pm2 delete <AppName>/<id>
其他命令
pm2 info <AppName>/<id> // 查看进程详细信息
pm2 log <AppName>/<id> // 查看进程日志, 执行后,可进行线上调试,查看打印日志
pm2 monit <AppName>/<id> // 打开监控 logs
3. pm2 常用配置
根目录下,新建空文件 /logs/err.log 和 /logs/out.log
新建配置文件 pm2.conf.json
pm2.conf.json:
{
"apps": {
"name": "pm2-test-server", // 起个进程名,即AppName
"script": "app.js", // 启动的入口文件(koa2项目中为/bin/www.js)
"watch": true, // 监听文件变化,自动重启
"ignore_watch": [ // 不需要监听的文件
"node_modules",
"logs"
],
"instances": 4, // 设置多进程
"error_file": "logs/err.log", // 错误日志存储的文件
"out_file": "logs/out.log", // console.log()打印的都会放进去
"log_date_format": "YYYY-MM-DD HH:mm:ss" // 给每行日志标记一个时间
}
}
修改package.json:
{
"name": "pm2-test",
"version": "1.0.0",
"description": "",
"main": "index.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 pm2.conf.json"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
...
"cross-env": "^5.2.0",
"nodemon": "^1.19.1"
...
}
}
配置完后,执行下面命令,即可启动项目
$ npm run prd
漫思
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
2023-02-15 “开源 core-js 也许是我一生中最大的错误”
2023-02-15 如何解决Reporting Services目录数据库文件存在的问题
2023-02-15 怎么处理Reporting Services目录数据库文件存在的问题?
2023-02-15 Redis配置以及通过C#访问小试
2023-02-15 从 Newtonsoft.Json 迁移到 System.Text.Json
2023-02-15 动态Entity Framework查询:Dynamic Query 介绍
2023-02-15 asp.net 开发优秀博客