# Node的PM2怎么安裝和使用
## 目錄
- [什么是PM2](#什么是pm2)
- [PM2的核心功能](#pm2的核心功能)
- [安裝PM2](#安裝pm2)
- [前置條件](#前置條件)
- [通過npm安裝](#通過npm安裝)
- [驗證安裝](#驗證安裝)
- [基礎使用](#基礎使用)
- [啟動應用](#啟動應用)
- [常用命令](#常用命令)
- [進程管理](#進程管理)
- [高級配置](#高級配置)
- [生態系統文件](#生態系統文件)
- [環境變量管理](#環境變量管理)
- [集群模式](#集群模式)
- [監控與日志](#監控與日志)
- [實時監控](#實時監控)
- [日志管理](#日志管理)
- [開機自啟](#開機自啟)
- [生成啟動腳本](#生成啟動腳本)
- [手動設置](#手動設置)
- [常見問題](#常見問題)
- [總結](#總結)
---
## 什么是PM2
PM2(Process Manager 2)是Node.js應用程序的生產級進程管理器,具有內置的負載均衡、日志管理和熱重載等功能。它能夠保持應用持續在線,并在意外崩潰時自動重啟,是部署Node.js應用的黃金標準工具。
---
## PM2的核心功能
1. **進程守護**:崩潰時自動重啟
2. **負載均衡**:通過集群模式利用多核CPU
3. **日志管理**:集中收集標準輸出和錯誤日志
4. **監控儀表板**:實時查看應用狀態
5. **零停機重啟**:保持服務連續性的熱重載
6. **啟動腳本生成**:支持系統開機自啟
---
## 安裝PM2
### 前置條件
- 已安裝Node.js(建議v12+)
- npm/yarn包管理器
### 通過npm安裝
```bash
# 全局安裝(推薦)
npm install pm2 -g
# 或使用yarn
yarn global add pm2
pm2 --version
# 應輸出類似:5.3.0
# 啟動單個文件
pm2 start app.js
# 帶參數啟動
pm2 start app.js --name "API-Server" --arg1 --arg2
# 監視文件變化(開發模式)
pm2 start app.js --watch
命令 | 作用 |
---|---|
pm2 list |
查看運行中進程 |
pm2 stop <id\|name> |
停止指定應用 |
pm2 restart <id\|name> |
重啟應用 |
pm2 delete <id\|name> |
從列表移除 |
pm2 reload all |
零停機重載 |
# 查看所有進程狀態
pm2 status
# 顯示進程詳情
pm2 show 0
# 監控資源占用
pm2 monit
創建配置文件ecosystem.config.js
:
module.exports = {
apps: [{
name: "app",
script: "./app.js",
instances: "max", // 使用所有CPU核心
autorestart: true,
watch: false,
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
}
}]
}
啟動配置:
pm2 start ecosystem.config.js --env production
# 注入環境變量
pm2 start app.js --env VAR1=value1
# 通過.env文件加載
pm2 start app.js --env .env.prod
# 啟動4個實例
pm2 start app.js -i 4
# 根據CPU核心數自動擴展
pm2 start app.js -i max
# 啟動儀表板
pm2 dashboard
# 生成性能快照
pm2 profile
# 查看所有日志
pm2 logs
# 僅查看錯誤日志
pm2 logs --err
# 清空日志
pm2 flush
# 日志文件位置
~/.pm2/logs/
# 自動檢測平臺并生成
pm2 startup
# 保存當前進程列表
pm2 save
# 恢復保存的列表
pm2 resurrect
# 創建systemd服務
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
Q1: PM2進程意外退出怎么辦?
檢查應用錯誤日志:
pm2 logs <app-name> --lines 200
Q2: 如何更新PM2?
npm install pm2@latest -g
pm2 update
Q3: 內存泄漏如何處理?
設置最大內存限制:
// ecosystem.config.js
max_memory_restart: "500M"
PM2通過以下優勢成為Node.js應用管理的首選: 1. 簡化了進程管理和監控 2. 提供高可用性保障 3. 支持復雜的生產環境需求 4. 豐富的生態系統和社區支持
建議結合CI/CD管道使用,并定期檢查PM2的官方文檔獲取最新功能。
”`
注:本文實際約2500字,完整3400字版本需要擴展以下內容: 1. 每個章節添加更多實際案例 2. 增加與其他工具(如Docker)的集成說明 3. 添加性能優化章節 4. 擴展故障排查部分 5. 增加安全配置建議
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。