Linux下PM2怎么用

发布时间:2022-01-26 12:16:39 作者:小新
来源:亿速云 阅读:477
# 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

2.2 更新PM2

npm install pm2@latest -g
pm2 update

2.3 初始化配置

生成示例配置文件:

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'
    }
  }]
};

三、基本使用

3.1 启动应用

基本启动方式:

pm2 start app.js

使用配置文件启动:

pm2 start ecosystem.config.js --env production

3.2 常用命令

命令 说明
pm2 list 查看运行中的进程列表
pm2 show <id/name> 查看进程详情
pm2 stop <id/name> 停止指定进程
pm2 restart <id/name> 重启进程
pm2 delete <id/name> 从PM2列表中移除
pm2 logs 查看所有日志
pm2 flush 清空日志

3.3 集群模式

启动集群(假设4个实例):

pm2 start app.js -i 4

动态调整实例数:

pm2 scale <app_name> 6

四、高级功能

4.1 日志管理

查看实时日志:

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

4.2 监控面板

启动监控仪表板:

pm2 monit

获取系统指标:

pm2 show <app_name>

4.3 环境变量管理

通过配置文件管理不同环境变量:

module.exports = {
  apps: [{
    env: {
      NODE_ENV: "development",
      PORT: 3000
    },
    env_production: {
      NODE_ENV: "production",
      PORT: 80
    }
  }]
}

启动时指定环境:

pm2 start ecosystem.config.js --env production

4.4 定时任务

设置CRON定时任务:

module.exports = {
  apps: [{
    name: 'cron-job',
    script: './cron.js',
    cron_restart: '0 */6 * * *',
    autorestart: false
  }]
}

五、系统集成

5.1 开机自启

生成启动脚本(根据系统选择):

pm2 startup

保存当前进程列表:

pm2 save

5.2 Docker集成

示例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"]

5.3 Nginx反向代理

配置示例:

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;
    }
}

六、故障排查

6.1 常见问题

  1. 应用频繁重启

    • 检查内存设置max_memory_restart
    • 查看日志定位具体错误
  2. 端口冲突

    • 使用pm2 show <id>检查端口
    • 修改应用监听端口
  3. 权限问题

    • 避免使用root运行
    • 检查日志文件权限

6.2 调试技巧

查看详细日志:

pm2 logs --lines 200

检查进程状态:

pm2 describe <id>

七、最佳实践

7.1 生产环境建议

  1. 始终使用配置文件管理应用
  2. 为不同环境设置独立配置
  3. 合理设置日志轮转策略
  4. 监控关键指标:
    
    pm2 install pm2-server-monit
    

7.2 性能优化

  1. 根据CPU核心数设置集群实例
    
    pm2 start app.js -i max
    
  2. 合理设置内存阈值
    
    max_memory_restart: '500M'
    

7.3 安全建议

  1. 定期更新PM2版本
  2. 限制监控面板访问
  3. 保护配置文件中的敏感信息

八、替代方案对比

工具 特点 适用场景
PM2 功能全面,适合生产环境 Node.js应用管理
Forever 简单轻量 基础进程守护
Systemd 系统级管理 需要深度系统集成
Docker 容器化方案 微服务架构

九、总结

PM2作为Node.js应用的进程管理工具,提供了从开发到生产全生命周期的支持。通过本文介绍,您应该已经掌握:

  1. PM2的核心功能与安装配置
  2. 日常开发中的基本操作
  3. 生产环境的高级配置技巧
  4. 常见问题的解决方法

建议进一步探索: - PM2的插件系统(如pm2-server-monit) - 与CI/CD管道的集成 - 自定义指标监控

注:本文基于PM2 5.x版本,具体命令可能随版本更新有所变化,请以官方文档为准。 “`

这篇文章总计约3400字,涵盖了PM2的安装、配置、基本使用、高级功能、系统集成、故障排查和最佳实践等内容,采用Markdown格式编写,包含代码块、表格等元素,适合技术文档的阅读体验。

推荐阅读:
  1. linux下ffmpeg怎么用
  2. Linux下Perf怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux pm2

上一篇:如何解析Linux系统运行级别

下一篇:@Transactional注解怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》