阶段任务

0 项
  • 使用 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、进程存活和证书过期

建议练习

0 项
部署

部署 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 突然不可用,需要提前监控或自动续期

AI 协作提示词

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、端口未监听、数据库连接失败
  • 能写出上线前备份、回滚和基础监控检查清单

推荐资源

进度数据