个人站点部署不是只把页面跑起来。长期维护时,更重要的是备份、证书、域名、反代、对象存储、迁移和日志方案。每个环节都不复杂,但少一个检查点,出问题时就会很难恢复。
备份要覆盖代码之外的东西
站点备份至少包含四类:
- 数据库备份。
- 网站目录备份。
- Docker Compose、环境变量和启动参数。
- 证书、反代配置和定时任务。
如果使用 1Panel、宝塔或类似面板,不要只依赖面板快照。面板配置、站点目录和数据库要能独立恢复。
服务器之间同步目录可以用 rsync,先 dry-run:
rsync -avzn /source/ user@host:/target/
确认无误后再执行:
rsync -avz /source/ user@host:/target/
静态站优先确认构建入口
Netlify、Cloudflare Pages、GitHub Pages 等平台都适合静态站。上线前先确认:
- 构建命令。
- 发布目录。
- 环境变量。
- 自定义域名。
- HTTPS 状态。
- 重定向规则。
静态站最常见的问题不是平台本身,而是构建目录写错、路由刷新 404、环境变量未设置和缓存未清理。
Cloudflare 常见检查点
Cloudflare 常用能力包括 DNS 代理、HTTPS、页面规则、重定向和 CDN 缓存。排障时可以按这个顺序查:
- 控制台异常:先排除本地网络、浏览器插件、代理和 Cloudflare 状态页。
- 重定向循环:检查 Cloudflare SSL 模式、源站强制 HTTPS 和应用内跳转。
- 缓存未更新:清理 Cloudflare 缓存,确认源站响应头。
- 访问变慢:判断是否开启代理、是否命中缓存、源站是否稳定。
Cloudflare Origin 证书和公开 CA 证书不要混用场景。证书私钥也不应写进普通笔记。
MinIO 配置要区分公开和私密
MinIO 相关内容可以拆成两类:
- 公开文档:Nginx 反代、桶策略原则、
SignatureDoesNotMatch排障思路。 - 私密文档:Access Key、Secret Key、真实桶名、真实域名和服务端路径。
示例命令可以保留结构,但必须用占位符:
mc alias set myminio https://minio.example.com your-access-key your-secret-key
mc cp ./example.jpg myminio/image/example.jpg
真正重要的是记录“别名、桶、路径、策略、反代、签名版本和时间偏差”这些排查维度。
域名和证书不要凭感觉管理
域名选择要看用途,不要为了好看囤太多。证书检查清单包括:
- 证书有效期。
- 域名是否覆盖主域和通配符。
- 私钥权限是否只给服务进程读取。
- 续签后是否 reload Nginx。
- CDN 和源站的 HTTPS 模式是否一致。
如果站点绑定长期主域名,迁移前更要准备回滚方案。
宝塔或面板迁移前后都要检查
迁移前:
- 导出数据库。
- 备份网站目录。
- 备份 Nginx 或 Apache 配置。
- 记录 PHP、MySQL、Redis、Nginx 版本。
- 备份定时任务。
- 备份证书。
迁移后:
- 检查伪静态。
- 检查证书续签。
- 检查 Redis 自动拉起。
- 检查监控报表。
- 检查防火墙和反代规则。
日志方案要能定位问题
个人站点也需要基础日志规范:
- 时间格式统一。
- 日志级别清晰。
- 操作标识明确。
- 关键入参脱敏。
- 业务错误和系统错误分开。
- 定时任务有开始、结束、耗时和结果。
有日志,排障是工程问题;没有日志,排障就容易变成猜谜。
实用结论
个人站点部署的重点是可恢复。上线前确认构建和域名,上线后保留备份和日志,迁移时按清单执行。Cloudflare、MinIO、证书和面板都只是工具,真正决定稳定性的,是有没有把恢复路径提前铺好。
正文完




