用 GitHub + Vercel 搭了一套全自动网站部署链路

⚙️ 技术方案

从手动到全自动

腾讯云 + GitHub + Vercel + 三站联动,一次配好管到低

最近把网站部署架构重新梳理了一遍,从腾讯云到 GitHub 再到 Vercel 实现了全自动部署。记录一下完整的方案,给同样折腾自建站的朋友参考。

之前的局面

我手头三台服务器:腾讯云主力、web2 辅助、nasweb 备份。每次更新文件要手动同步三遍,用 lftp 传到 web2 和 nasweb,偶尔还会漏掉一两个站。也没有版本管理,改错了回不去。

😅 痛点 — 手工操作三站同步,容易漏、容易忘、改错了回不了头

现在的架构

整条链路很简单:

腾讯云 web 实时监控 GitHub 私有仓库 Vercel 自动部署 (ai.nickys.cn)
                                  
                         自动同步到 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 之后,变更的文件自动同步到这两个站,真正的三站一体。

✅ 效果 — 四个站(web、web2、nasweb、Vercel)一次更新,全部到位

踩过的几个坑

🛑 GitHub push protection — 扫描到密钥会阻止推送。但私有仓库不会阻止,只是提醒,直接忽略就行。
🛑 Vercel 函数路径限制 — functions 配置要求 PHP 文件必须放在 api/ 目录下。写一个 api/router.php 做中转就能绕过。
🛑 lftp 超时 — 网络不稳定时容易掉线。加上重试参数和 -P3 并行传输能改善。
📌 总结

这套方案跑下来,最舒服的是不用再记”这个文件同步了没有”。改了文件,等一分钟,四个站(web、web2、nasweb、Vercel)自动到位。GitHub 上还有完整的历史版本,改错了随时回退。

对于手头有多台服务器的朋友,GitHub 做中间枢纽 + 服务器端实时监控,比手动 FTP 挨个传靠谱得多。

发表评论