Hexo + Solitude v4 升级与 GitHub Actions 自动部署实录
今晚把博客从 Solitude 旧版升级到了 v4,并接通了 GitHub Actions 自动部署到 alyzg。记录一下关键步骤和踩到的坑。
升级主题
原来的 Solitude 是本地源码目录,版本停留在 3.x。官方 v4 已改为 npm 包发布,所以直接:
1 | npm install hexo-theme-solitude@4 |
然后删掉旧的 themes/solitude/ 目录,避免冲突。_config.solitude.yml 的顶层配置键与 v4 默认配置完全对应,不需要迁移。
自动部署链路
参考 Telegram Bot 的部署方式,新增 .github/workflows/deploy.yml:
push main触发npm ci安装依赖hexo clean && hexo generate构建scp public/*到 alyzg 的/var/www/blogssh执行nginx -t && systemctl reload nginx
GitHub Secrets 配置了 HOST、USERNAME、SSH_PRIVATE_KEY、TARGET_DIR。
踩坑:CSS 文件 0 字节
部署后发现页面没有样式,控制台也没报 JS 错。查服务器上的 css/index.css,竟然是 0 字节。
本地复现后定位到原因:_config.solitude.yml 里 css_prefix: true,这会让主题 @import 'nib' 做 CSS 前缀自动补全。但 nib@1.2.0 与当前 stylus@0.62.0 不兼容,stylus 编译失败,Hexo 静默输出了空 CSS。
解决方式很直接:
1 | css_prefix: false |
现代浏览器基本不再需要这类 Legacy 前缀补全,关掉后 CSS 正常生成(220K 左右)。
域名与证书
域名使用根域 zhuonian.xyz,并额外解析了 www 和 blog 两个子域。三台主机共用同一个 nginx server 块,certbot 申请证书时覆盖三个域名:
1 | certbot --nginx -d zhuonian.xyz -d www.zhuonian.xyz -d blog.zhuonian.xyz |
blog.zhuonian.xyz 选择同台展示,而不是 301 跳转到根域。
当前状态
https://zhuonian.xyz可正常访问https://blog.zhuonian.xyz同台展示- 本地 push 后 Actions 自动部署
后续只剩内容填充了。
本文是原创文章,采用CC BY-NC-SA 4.0许可协议,完整转载请注明来自卓年的小站
评论
