- 使用 SSH 登录服务器并理解用户、目录和权限
- 掌握 ls、cd、pwd、mkdir、cp、mv、cat、tail、grep、chmod、chown
- 查看进程和端口:ps、top、ss、lsof
- 理解服务器安全组、防火墙和端口监听
- 安装 Node.js、Python 或 Java 运行环境
- 使用 PM2 或 systemd 管理服务
- 配置 Nginx 反向代理和静态资源路径
- 配置域名解析和 HTTPS 证书
- 管理生产环境变量、日志目录、上传目录和文件权限
- 理解数据库备份、恢复和上线前回滚方案
- 查看 Nginx 日志、后端日志并排查 502、404、数据库连接失败
- 了解基础监控:磁盘、内存、CPU、进程存活和证书过期
部署
部署 Node API
把本地 Express 服务部署到 Ubuntu 服务器,用 PM2 启动,用 Nginx 代理到域名。
产出物通过域名访问 /health 或 /api 接口。
排错
排查 502
模拟或记录一次 502,按 Nginx 日志、服务进程、端口监听、后端日志逐步排查。
产出物一份 502 排查清单。
部署
整理部署手册
把安装依赖、配置环境变量、启动服务、配置 Nginx、配置 HTTPS、回滚和查看日志整理成一份手册。
产出物deploy-notes.md 初版。
数据库
数据库备份和恢复演练
为 MySQL 或 PostgreSQL 写一份备份、下载、恢复和校验流程,说明上线前什么时候必须备份。
产出物一份数据库备份恢复命令清单。
排错
基础监控检查
整理 CPU、内存、磁盘、端口、PM2 或 systemd 状态、Nginx 日志、证书有效期的检查命令。
产出物一份服务器巡检清单。
Day 1
SSH、目录和权限
先能安全进入服务器,知道代码、日志、配置通常放在哪里。
- 使用 ssh 登录 Ubuntu 服务器
- 练习 pwd、ls -la、cd、mkdir、cat、tail
- 理解 root 用户、普通用户、文件权限和 chown/chmod
- 创建 /var/www 或 /opt/app 下的后端项目目录
当天产出一份服务器目录和权限笔记。
Day 2
服务进程与端口
能判断服务到底有没有运行、监听了哪个端口、为什么外部访问不到。
- 启动一个本地监听 3000 的后端服务
- 使用 ps、ss -lntp、lsof -i 检查进程和端口
- 区分 127.0.0.1、0.0.0.0、服务器公网 IP
- 检查云服务器安全组和 ufw 防火墙规则
当天产出一份端口排查命令清单。
Day 3
PM2 部署 Node 服务
把 npm start 变成长期运行、可重启、可查看日志的服务。
- 安装 Node.js 和 PM2
- 上传代码或从 Git 拉取代码
- 配置 .env 并安装依赖
- 使用 pm2 start、pm2 logs、pm2 restart、pm2 save 管理服务
当天产出一个由 PM2 管理的 Node 后端服务。
Day 4
Nginx 反向代理与域名
让用户通过域名访问 API,而不是直接暴露后端端口。
- 为 api.example.com 写 Nginx server 配置
- 配置 proxy_pass 到 127.0.0.1:3000
- 执行 nginx -t 检查配置并 reload
- 用 curl -I 和浏览器验证域名访问
当天产出一个可通过域名代理到后端服务的 Nginx 配置。
Day 5
HTTPS 与生产配置
理解证书、环境变量、日志路径和生产错误信息。
- 使用 Certbot 或服务器面板配置 HTTPS
- 检查 HTTP 到 HTTPS 跳转
- 确认生产 .env 不进仓库
- 确认后端错误响应不会暴露堆栈和密钥
- 确认上传目录、日志目录和数据库备份目录权限
当天产出一份上线前生产配置检查表。
Day 6
常见故障排查演练
把 502、端口未监听、数据库连不上、权限不足变成有步骤的排查流程。
- 按 Nginx access/error log、PM2 log、服务端口、数据库连接顺序排查 502
- 记录一次故障现象、命令、日志和最终原因
- 让 AI 根据日志给排查建议,并人工判断是否靠谱
- 补充数据库备份、回滚、证书续期、磁盘空间检查命令
- 整理 deploy-notes.md 的初版
当天产出一份后端部署排错 runbook。
部署不是最后一步的复制粘贴,而是服务运行、网络、进程、日志和反向代理的组合能力。
Nginx 反向代理
Nginx 对外接收请求,再转发给本机后端服务端口。
前端类比:类似开发时 Vite proxy,只是运行在服务器上。
PM2
Node.js 进程管理工具,负责启动、重启、查看日志和守护进程。
前端类比:类似让 npm run start 变成后台长期运行的服务。
systemd
Linux 系统服务管理工具,常用于管理 Python、Java 等长期运行服务。
前端类比:类似系统级的进程守护配置。
安全组和防火墙
云平台和服务器系统都会限制入站端口,服务启动不代表外网能访问。
前端类比:类似浏览器同源限制之外,还有服务器网络入口限制。
日志链路
一次线上请求可能留下 Nginx 日志、应用日志、数据库日志,需要按链路定位。
前端类比:类似前端同时看 Network、Console 和接口响应。
回滚
上线失败时快速恢复到上一个可用版本,包括代码、配置和必要的数据处理。
前端类比:类似前端发布后发现问题,回退到上一版构建产物。
数据库备份
在上线、迁移或高风险操作前保存数据副本,避免误操作造成不可恢复损失。
前端类比:类似改重要设计稿前先保留一个可恢复版本。
基础监控
持续观察服务进程、端口、CPU、内存、磁盘、日志和证书状态,提前发现问题。
前端类比:类似前端监控页面错误和接口失败率,但运行在服务器层。
常见坑点- 服务本地能跑不代表服务器能访问,端口、安全组、Nginx 都要检查
- 502 通常先查后端服务是否启动、端口是否正确、Nginx proxy_pass 是否正确
- 不要把生产环境 .env 提交到仓库
- 改 Nginx 配置后要先测试配置再重载
- 不要直接暴露数据库端口到公网
- 上线前没有备份和回滚方案,出问题时会非常被动
- 磁盘写满会导致日志、数据库和上传同时异常
- 证书过期会让 HTTPS 突然不可用,需要提前监控或自动续期
Node 服务部署
我有一台 Ubuntu 服务器,需要部署一个 Node.js Express 后端。项目监听 3000 端口,域名是 api.example.com。请给我完整部署步骤,包括安装 Node.js、上传代码、安装依赖、配置 .env、使用 PM2 启动、配置 Nginx 反向代理、配置 HTTPS、常见错误排查命令。请每一步都说明为什么要这么做。
部署故障排查
我的后端服务部署后访问报错。现象:访问地址【填写】,错误状态码【填写】,Nginx 日志【填写】,后端日志【填写】,服务启动命令【填写】,服务器系统【填写】。请帮我判断可能原因,并按优先级给出排查命令和修复方案。
生成 Nginx 配置并解释
请为域名【填写】生成一个 Nginx 反向代理配置,后端服务在 127.0.0.1:【端口】。请说明每个 proxy_set_header 的作用,给出 nginx -t、reload、查看日志和验证访问的命令。
上线前检查清单
请为一个即将部署到 Ubuntu 服务器的后端项目生成上线前检查清单。请覆盖环境变量、进程管理、Nginx、HTTPS、数据库备份、上传目录权限、日志路径、回滚方案、安全组、防火墙、磁盘空间、监控和常见排错命令。
- 能 SSH 登录服务器并查看项目目录
- 能启动、停止、重启服务并查看日志
- 能配置 Nginx proxy_pass 和 HTTPS
- 能区分应用端口、Nginx 端口、安全组和防火墙
- 能通过日志排查 502、端口未监听、数据库连接失败
- 能写出上线前备份、回滚和基础监控检查清单