对于个人博客来说,发布流程越短越好。最理想的状态是:本地改完文章,执行一次 make deploy,站点就更新到服务器上。
为什么用 Make
Makefile 的好处是把常用动作标准化:
make build只负责生成静态文件。make deploy负责先构建,再同步到服务器。- 所有参数都可以通过变量覆盖,方便后续调整。
这样你不需要记复杂命令,也不需要每次手动输入一长串 rsync 参数。
一个实用的部署思路
比较稳妥的方式是:
- 本地运行 Hugo 构建,生成
public/。 - 使用
rsync把public/同步到服务器目录。 - 服务器上的
Nginx直接读取这个目录,对外提供访问。
这种方式简单、透明,也方便排查问题。只要静态文件生成正常,线上就能直接更新。
远程同步的关键参数
如果你使用 SSH 证书登录,发布时要注意这几个点:
- 指定私钥文件,例如
~/.ssh/id_ed25519。 - 指定非默认端口,例如
11223。 - 开启
--delete,保证服务器上的旧文件能被清理。
示例命令逻辑如下:
rsync -az --delete -e "ssh -i ~/.ssh/id_ed25519 -p 11223" public/ user@server:/var/www/example/
如果你把它写进 Makefile,就能把这些细节一次性固化下来。
服务器侧的建议
服务器上建议提前准备好站点目录,例如:
/var/www/goodbag.cn
然后让 Nginx 的 root 指向这个目录。后续每次发布,只需要同步静态文件,不需要重启复杂应用。
HTTPS 和域名
域名已经备案通过之后,建议直接把站点放在 HTTPS 下运行。这样做有两个好处:
- 访问更安全。
- 对搜索和用户信任更友好。
证书可以用阿里云的相关流程申请,然后在 Nginx 里统一处理跳转和证书配置。
小结
对 Hugo 博客来说,发布最重要的不是“部署得多复杂”,而是“部署得稳定且可重复”。Makefile + rsync + Nginx 是一个非常朴素但可靠的组合,足够支撑大多数个人技术站。