Hexo 博客部署全记录

把博客从 GitHub Pages 搬到阿里云 ECS 已经有一阵子了,整个过程比想象中顺利。这篇记录一下部署方案和踩过的坑。

部署架构

博客本身是纯静态站点,架构非常轻:

层级方案
生成Hexo 7 + Anzhiyu 主题
服务器阿里云 ECS(Debian)
Web 服务Nginx 静态托管
HTTPSLet’s Encrypt 免费证书,自动续期
优化Gulp 压缩 + Service Worker 离线缓存

一键部署脚本

本地写好文章后,跑一个脚本就能完成”清理 → 生成 → 压缩 → 上传”的全流程:

1
bash deploy.sh

脚本内部其实就是四步:

1
2
3
4
npx hexo clean
npx hexo generate
npx gulp # 压缩 + 注入 sw.js,别忘了这步!
scp -r public/* root@服务器:/var/www/html/

之前就吃过亏:只跑了 hexo generate 忘了 gulp,结果线上站点缺少 sw.js,PWA 离线缓存完全不生效。

踩坑小结

  1. gulp 的 mini-font 任务:项目里没有字体文件时,public/fonts 目录不存在会直接 ENOENT 报错,需要在任务里做存在性判断。
  2. 公共 meting API 不稳定:音乐馆依赖的第三方接口说挂就挂,最后还是自建了 meting-api 放在自己域名下才稳定。
  3. abbrlink 冲突:abbrlink: '0' 会被插件当成已存在值跳过,多篇文章会撞同一个 URL,删掉让插件自动生成即可。

写博客是件快乐的事,把过程记录下来就更有意义了。