落叶楼阅读app最新版本
27.23MB · 2025-12-15
那么 基于 Git 的 Hugo Public 目录热更新方案 是最轻量、最稳定的部署方式。
这篇文章将完整介绍如何使用 Git 将 Hugo 的 public 目录推送到服务器,并通过服务器端 hook 实现热更新自动上线。
Hugo 的 public 目录只是纯静态文件,部署可以非常简单:
只要 push 一下,就能让服务器自动同步最新 public 文件,实现真正的 Zero-Downtime 热更新。
本地电脑
├── Hugo 项目
│ ├── content/
│ ├── themes/
│ ├── public/ ← 构建后目录
│
└── git push deploy main
↓
服务器
└── /var/repo/hugo_public.git (bare repo)
↓ post-receive hook 自动触发
└── /var/www/website ← 网站根目录(热更新)
流程:
hugo && git push deploy main
post-receive hook/var/www/website服务器上执行:
mkdir -p /var/repo
cd /var/repo
git init --bare hugo_public.git
设置默认主分支(避免 “branch yet to be born”):
cd hugo_public.git
git symbolic-ref HEAD refs/heads/main
编辑:
/var/repo/hugo_public.git/hooks/post-receive
内容:
#!/bin/bash
set -e
echo ">>> 正在部署 Hugo 静态文件..."
WORK_TREE=/var/www/website
GIT_DIR=/var/repo/hugo_public.git
# 自动创建 main 分支(首次部署不会失败)
if ! git rev-parse --verify main >/dev/null 2>&1; then
git checkout -b main
fi
git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f main
echo ">>> 部署完成!"
赋予可执行权限:
chmod +x /var/repo/hugo_public.git/hooks/post-receive
进入 Hugo 项目目录:
cd public
git init
git add .
git commit -m "init public"
添加服务器地址:
git remote add deploy ssh://ubuntu@服务器IP/var/repo/hugo_public.git
你可以直接用两段式:
hugo
cd public
git add .
git commit -m "update"
git push deploy main
或者把它合成一个命令:
hugo && (cd public && git add . && git commit -m "update" && git push deploy main)
服务器自动执行:
>>> 正在部署 Hugo 静态文件...
>>> 部署完成!
网站秒级更新
| 优势 | 说明 |
|---|---|
| 零停机 | 静态文件直接覆盖,无需 reload |
| 不需登录服务器 | 所有操作本地 push 完成 |
| 不需 CI/CD | 无 GitHub Actions / GitLab Runner |
| 安全 | 仅开放 SSH |
| 高速 | Hugo 构建 + Git push 极快 |
| 可回滚 | 服务器 public 目录有完整 Git 历史 |
这是部署 Hugo 最轻便、最优雅的方法之一。
本方案的核心逻辑:
如果你正在运营博客、文档站、产品官网,这是目前最强的 Hugo 私有部署方案。