网站自动部署到腾讯云说明

这套部署逻辑的目标很简单:把本地整理好的公开文档,经过隐私过滤后,同步到腾讯云服务器上的公开网站。

整个流程不是直接把私人资料库上传到服务器,而是先生成一个 Document-Public 公开目录。只有允许公开的目录和文件会被复制进去,敏感目录、大文件、备份文件和明确排除的内容不会进入公开包。

核心流程

  1. 本地运行公开包构建脚本。
  2. 根据 public_release.toml 生成 Document-Public
  3. 检测 Document-Public 是否存在真实内容变化。
  4. 如果没有变化,跳过部署。
  5. 如果有变化,打包公开目录。
  6. 通过 SSH 上传到腾讯云服务器。
  7. 服务器备份旧版本。
  8. 解压并替换新版本。
  9. 安装或更新 Python 依赖。
  10. 重启网站服务计划任务。
  11. 检查 /healthz,确认网站可访问。

自动同步脚本

本地主要脚本是:

C:\Users\17917\Desktop\Document\网站\scripts\sync_public_release.ps1

它负责判断是否需要部署。只有公开内容发生变化时,才会调用真正的部署脚本。

真正执行上传和服务器替换的是:

C:\Users\17917\Desktop\Document\网站\scripts\deploy_public_release.ps1

部署脚本会连接 SSH 别名 xincheng-site。服务器登录信息不写进文档,也不写进公开仓库。

一键手动同步

我平时可以直接双击这个文件:

C:\Users\17917\Desktop\Document\sync_public_site.bat

它会调用同步脚本。如果没有内容变化,就只显示跳过部署。如果有新文档或网站代码变化,就会自动上传并部署。

定时同步

本机 Windows 计划任务名称是:

DocumentPublicAutoSync

当前设置为每天中午运行一次。这个任务适合处理不频繁更新的场景:当天有内容变化就同步,没有变化就跳过。

服务器端运行方式

腾讯云服务器上,网站服务由 Windows 计划任务运行:

DocumentPublicSite

这个任务会启动公开网站的 Flask 服务,并监听本机 127.0.0.1:5000。外部访问走 nginx,nginx 再反向代理到这个本地端口。

如果 nginx 正常但后端服务停止,公网就可能出现 502 Bad Gateway。之前已经把站点任务设置为无执行时限,避免运行 3 天后自动停止。

隐私边界

公开同步只依赖白名单目录,当前允许公开的内容主要包括:

  • 软件
  • 日记
  • 影评
  • 简要
  • 游戏

额外排除规则在 public_release.toml 里维护。比如不公开的日期、敏感关键词、大型输出文件和隐藏目录,都应该写进 deny 规则。

这个流程的原则是:先生成公开副本,再上传公开副本。不要直接上传私人资料库。

常用检查

部署后可以看健康检查:

https://xincheng213618.com/healthz

如果返回 status: ok,并且文档数量符合预期,说明公开站点服务正常。