网站自动部署到腾讯云说明
这套部署逻辑的目标很简单:把本地整理好的公开文档,经过隐私过滤后,同步到腾讯云服务器上的公开网站。
整个流程不是直接把私人资料库上传到服务器,而是先生成一个 Document-Public 公开目录。只有允许公开的目录和文件会被复制进去,敏感目录、大文件、备份文件和明确排除的内容不会进入公开包。
核心流程
- 本地运行公开包构建脚本。
- 根据
public_release.toml生成Document-Public。 - 检测
Document-Public是否存在真实内容变化。 - 如果没有变化,跳过部署。
- 如果有变化,打包公开目录。
- 通过 SSH 上传到腾讯云服务器。
- 服务器备份旧版本。
- 解压并替换新版本。
- 安装或更新 Python 依赖。
- 重启网站服务计划任务。
- 检查
/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,并且文档数量符合预期,说明公开站点服务正常。