对于个人博客来说,发布流程越短越好。最理想的状态是:本地改完文章,执行一次 make deploy,站点就更新到服务器上。

为什么用 Make

Makefile 的好处是把常用动作标准化:

  • make build 只负责生成静态文件。
  • make deploy 负责先构建,再同步到服务器。
  • 所有参数都可以通过变量覆盖,方便后续调整。

这样你不需要记复杂命令,也不需要每次手动输入一长串 rsync 参数。

一个实用的部署思路

比较稳妥的方式是:

  1. 本地运行 Hugo 构建,生成 public/
  2. 使用 rsyncpublic/ 同步到服务器目录。
  3. 服务器上的 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

然后让 Nginxroot 指向这个目录。后续每次发布,只需要同步静态文件,不需要重启复杂应用。

HTTPS 和域名

域名已经备案通过之后,建议直接把站点放在 HTTPS 下运行。这样做有两个好处:

  • 访问更安全。
  • 对搜索和用户信任更友好。

证书可以用阿里云的相关流程申请,然后在 Nginx 里统一处理跳转和证书配置。

小结

对 Hugo 博客来说,发布最重要的不是“部署得多复杂”,而是“部署得稳定且可重复”。Makefile + rsync + Nginx 是一个非常朴素但可靠的组合,足够支撑大多数个人技术站。