PM2 + Nginx:Express 5 功能上线教程
本教程面向第一次把 Node.js 服务部署到 Linux 的开发者,以当前工程的 Express 5、TypeScript、CommonJS 编译模式为背景。
目标不是一次搭建复杂平台,而是先得到一个能够运行、重启、开机恢复、查看日志的部署:
浏览器
↓
Nginx :80 / :443
├─ / → 前端静态文件
└─ /api/* → 127.0.0.1:8080
↓
Express 5
↑
PM2 管理进程
↑
systemd 开机启动 PM2
学习路线
- 01 上线架构与请求流程
- 02 TypeScript 工程的生产构建
- 03 PM2 原理与基本命令
- 04 PM2、NVM 与 systemd
- 05 Nginx 反向代理 Express
- 06 PM2 与 Nginx 日志
- 07 第一次完整上线
- 08 更新、回滚与故障排查
- 09 完成首次上线后的渐进改进
- 10 使用 curl 排查 Nginx、PM2 与 Express 请求问题
本教程的第一阶段选择
Node.js:使用 NVM 固定一个生产版本
TypeScript:使用 tsc 编译
PM2:fork 模式、单进程
Nginx:静态文件 + /api/ 反向代理
日志:先使用 PM2 和 Nginx 的本地日志
发布:先掌握手工步骤,再考虑自动化
暂时不引入 Docker、Kubernetes、PM2 cluster、复杂 CI/CD 和集中式日志系统。它们有价值,但不是理解第一次上线的前提。
示例约定
教程采用以下示例值,请根据服务器实际情况替换:
| 项目 | 示例值 |
|---|---|
| Linux 部署用户 | deploy |
| 项目目录 | /var/www/nloop/current |
| Express 地址 | 127.0.0.1:8080 |
| PM2 应用名 | nloop-api |
| PM2 配置 | ecosystem.config.js |
| 域名 | example.com |
| 前端目录 | /var/www/frontend |
不要把示例中的用户名、目录和域名不加检查地复制到服务器。