您好,登录后才能下订单哦!
# Linux下PM2怎么用
## 一、PM2简介
### 1.1 什么是PM2
PM2(Process Manager 2)是Node.js应用程序的生产级进程管理器,具有内置的负载均衡功能。它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并简化常见的系统管理任务。
主要特性包括:
- 进程守护(保持应用持续运行)
- 负载均衡(集群模式)
- 日志管理
- 终端监控
- 热重载(0秒停机重启)
- 启动脚本生成
### 1.2 为什么选择PM2
与传统`node app.js`方式相比,PM2提供了:
- **崩溃自动重启**:当进程崩溃时自动恢复
- **日志集中管理**:无需额外配置日志文件
- **系统资源监控**:实时查看CPU/内存占用
- **多进程管理**:轻松实现集群模式
- **生态系统文件**:统一管理多个应用
## 二、安装与配置
### 2.1 安装PM2
通过npm全局安装:
```bash
npm install pm2 -g
验证安装:
pm2 --version
npm install pm2@latest -g
pm2 update
生成示例配置文件:
pm2 init simple
这会生成一个ecosystem.config.js
文件,基本结构如下:
module.exports = {
apps: [{
name: 'app',
script: 'app.js',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
};
基本启动方式:
pm2 start app.js
使用配置文件启动:
pm2 start ecosystem.config.js --env production
命令 | 说明 |
---|---|
pm2 list |
查看运行中的进程列表 |
pm2 show <id/name> |
查看进程详情 |
pm2 stop <id/name> |
停止指定进程 |
pm2 restart <id/name> |
重启进程 |
pm2 delete <id/name> |
从PM2列表中移除 |
pm2 logs |
查看所有日志 |
pm2 flush |
清空日志 |
启动集群(假设4个实例):
pm2 start app.js -i 4
动态调整实例数:
pm2 scale <app_name> 6
查看实时日志:
pm2 logs
按应用查看日志:
pm2 logs <app_name>
日志文件默认位于:
~/.pm2/logs/
配置日志轮转:
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
启动监控仪表板:
pm2 monit
获取系统指标:
pm2 show <app_name>
通过配置文件管理不同环境变量:
module.exports = {
apps: [{
env: {
NODE_ENV: "development",
PORT: 3000
},
env_production: {
NODE_ENV: "production",
PORT: 80
}
}]
}
启动时指定环境:
pm2 start ecosystem.config.js --env production
设置CRON定时任务:
module.exports = {
apps: [{
name: 'cron-job',
script: './cron.js',
cron_restart: '0 */6 * * *',
autorestart: false
}]
}
生成启动脚本(根据系统选择):
pm2 startup
保存当前进程列表:
pm2 save
示例Dockerfile:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm install pm2 -g
CMD ["pm2-runtime", "ecosystem.config.js", "--env", "production"]
配置示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
应用频繁重启
max_memory_restart
端口冲突
pm2 show <id>
检查端口权限问题
查看详细日志:
pm2 logs --lines 200
检查进程状态:
pm2 describe <id>
pm2 install pm2-server-monit
pm2 start app.js -i max
max_memory_restart: '500M'
工具 | 特点 | 适用场景 |
---|---|---|
PM2 | 功能全面,适合生产环境 | Node.js应用管理 |
Forever | 简单轻量 | 基础进程守护 |
Systemd | 系统级管理 | 需要深度系统集成 |
Docker | 容器化方案 | 微服务架构 |
PM2作为Node.js应用的进程管理工具,提供了从开发到生产全生命周期的支持。通过本文介绍,您应该已经掌握:
建议进一步探索: - PM2的插件系统(如pm2-server-monit) - 与CI/CD管道的集成 - 自定义指标监控
注:本文基于PM2 5.x版本,具体命令可能随版本更新有所变化,请以官方文档为准。 “`
这篇文章总计约3400字,涵盖了PM2的安装、配置、基本使用、高级功能、系统集成、故障排查和最佳实践等内容,采用Markdown格式编写,包含代码块、表格等元素,适合技术文档的阅读体验。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。