从手动到全自动
腾讯云 + GitHub + Vercel + 三站联动,一次配好管到低
最近把网站部署架构重新梳理了一遍,从腾讯云到 GitHub 再到 Vercel 实现了全自动部署。记录一下完整的方案,给同样折腾自建站的朋友参考。
之前的局面
我手头三台服务器:腾讯云主力、web2 辅助、nasweb 备份。每次更新文件要手动同步三遍,用 lftp 传到 web2 和 nasweb,偶尔还会漏掉一两个站。也没有版本管理,改错了回不去。
现在的架构
整条链路很简单:
↓
自动同步到 web2 + nasweb
GitHub 私有仓库
在 GitHub 上建了一个私有仓库 nicky5760-collab/default,存放腾讯云服务器的全部网站文件。私有仓库保证代码安全,密钥密码只有自己能看到。设置好 Personal Access Token,给足权限,一次配好管到底。
服务器实时监控
腾讯云上跑了个 inotify 监控脚本,盯着网站目录。文件有变动(新增、修改、删除),60 秒防抖后自动 git add、commit、push。每次变更自动推上去,不用再手工操作。
Vercel 自动部署
网站用的 PHP,Vercel 默认不支持。解决方案是 vercel-php 运行时,加一个 api/router.php 路由器,把所有 PHP 请求转发到对应文件。GitHub 一更新,Vercel 自动触发部署。
三站自动同步
web2 和 nasweb 都没有 Git 环境,通过监控脚本里的 lftp 自动同步。每次 git push 之后,变更的文件自动同步到这两个站,真正的三站一体。
踩过的几个坑
api/router.php 做中转就能绕过。
-P3 并行传输能改善。
这套方案跑下来,最舒服的是不用再记”这个文件同步了没有”。改了文件,等一分钟,四个站(web、web2、nasweb、Vercel)自动到位。GitHub 上还有完整的历史版本,改错了随时回退。
对于手头有多台服务器的朋友,GitHub 做中间枢纽 + 服务器端实时监控,比手动 FTP 挨个传靠谱得多。