GitHub Actions + GitHub Pages 是部署静态网页最省心的零运维组合:免费、开箱即用、支持自定义域名与HTTPS,5行配置即可实现推代码自动构建发布,回滚简单,适合个人项目与文档站。

选对组合:GitHub Actions + GitHub Pages 是最省心起点
对于大多数静态网页(HTML/CSS/JS + Vue/React 构建产物),推荐直接用 GitHub Actions + GitHub Pages,原因很实在:
- 零运维:不用装 Docker、不用配 Web 服务、不用管 HTTPS 证书续期,GitHub 全托管
- 开箱即用:仓库推代码 → Actions 自动构建 → Pages 自动发布,整个流程写在
.github/workflows/deploy.yml里,5 行配置就能跑通 - 免费且稳定:个人账号完全免费,支持自定义域名、强制 HTTPS、404 页面重定向
- 回滚简单:点几下就能切到任意历史 commit 对应的页面版本
自己搭服务器?用 Git + rsync 更轻量可靠
如果必须部署到自有 Linux 服务器(比如公司内网或 VPS),Git 钩子 + rsync 比 Jenkins 或 GitLab Runner 更轻、更可控:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 在服务器上建裸仓库(
git init --bare /var/www/site.git),再设 post-receive 钩子 - 钩子里执行:
rsync -av --delete /path/to/bare/repo/checkout/ /var/www/html/ - 本地开发完,
git push origin main就自动同步,无需额外 runner 或 token 管理 - 注意权限:确保 git 用户能写入
/var/www/html,建议用www-data组统一管理
构建环节要明确:静态 ≠ 不需要构建
很多静态网站其实是前端框架生成的(如 VuePress、Docusaurus、Next.js 的静态导出模式),CI 流程里必须包含构建步骤:
- 不要直接推送
src/目录,而是让 CI 运行npm install && npm run build - 确认输出目录(通常是
dist/或public/),并把它作为部署源 - 加个简单检查:构建后运行
ls -la dist/ | head -5,确保 index.html 真的存在,避免空目录上线 - 若用 Hugo/Jekyll,对应命令是
hugo --destination=public或jekyll build --destination _site
安全与权限:三个最容易踩的坑
在 Linux 上部署常因权限问题失败,重点盯住这三处:
-
SSH 密钥权限:用于 CI 推送或 rsync 的私钥,文件权限必须是
600,否则 OpenSSH 拒绝读取 -
Web 目录所有权:
/var/www/html不能只属 root;建议创建专用用户(如deploy),并加入www-data组,再chown -R deploy:www-data /var/www/html -
SELinux 或 AppArmor:CentOS/RHEL 默认开启 SELinux,可能阻止 nginx 读取非标准路径下的文件,临时调试可
setenforce 0,长期方案是打合适策略或改用标准路径

















