亏麻了家人们, 换个硬盘把原来那台 KVM 虚拟机丢了. 原来想着只要把换出来的系统盘拿来当移动硬盘使, 然后我一公一私两个博客都能保全;结果现在都丢完了, 原来那个 Fedora 系统连 GRUB 都进不去. 我的十几篇笔记和动态啊, 它咋办哪…

重新配置一遍吧, 反正新虚拟机运行了足足一个月, 生产力和原来那几台比真的遥遥领先, 重新搭个人站也不是问题. 所以现在是恢复专场, 我要把我原来那套 Hexo + Butterfly 的配置救回来.

配置简报

该 Hexo 服务器运行在 Ubuntu QEMU/KVM 本地服务器内.

  • 虚拟机平台: QEMU/KVM
    • QEMU emulator version 9.1.2 (qemu-9.1.2-2.fc41)
    • Virt-manager 4.1.0
    • 主机 OS: Fedora Linux 41 (GNOME 47)
  • 操作系统: Ubuntu 24.04 服务器版
  • NodeJS: v22.11.0 LTS, 从 https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-x64.tar.xz 下载

Hexo 的安装与搭建

从上述链接下载好 NodeJS 以后, 解压安装到预定的目录:

1
2
3
4
5
6
7
8
9
10
11
12
bash
tar -cJf node-v22.12.0-linux-x64.tar.xz ~/.local/opt/
# 给 .profile 或 .bashrc 添加下面内容
if [ -d $HOME/.local/opt/node-v22.11.0-linux-x64/bin ]; then
PATH="$PATH:$HOME/.local/opt/node-v22.11.0-linux-x64/bin"
fi
# npm 官方源慢得跟胶头滴管一样的, 换国内罢. 这个放 .bashrc 里
function npm() {
local registry='https://registry.npmmirror.com'
local cachedir="$HOME/.npm/.cache/cnpm"
$HOME/.local/opt/node-v22.11.0-linux-x64/bin/npm --registry="$registry" --cache="$cachedir" --disturl='https://npmmirror.com/mirrors/node' --userconfig="$HOME/.cnpmrc" $@
}

然后就可以访问 hexo.io 下载 Hexo 了:

1
2
bash
npm install hexo-cli -g

我要在 ~/Sites/medi-inside-out 下搭建个人站, 因此执行:

1
2
3
4
5
6
bash
mkdir -p ~/Sites && cd ~/Sites
hexo init medi-inside-out
cd medi-inside-out
# 想看看部署成功了没, 可以这么做(Ctrl+C 退出):
hexo s

你看, 它跑起来了!

See, Hexo runs!

可惜我还没找到合适的图床, GitHub 一上图片就贼慢, 所以先压缩一下, 将就着看了.

倘若我只修改贴子的话, 重新加载一下标签页就可以了;但要是改了配置就得重新加载服务器. 这点比不过 Hugo.

Butterfly 主题搭建

原先我使用的是 Butterfly 主题. 接下来的搭建按照文档描述即可.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bash
# Butterfly 提供了 Gitee 镜像仓库, 不用白不用
git clone -b master https://gitee.com/immyw/hexo-theme-butterfly.git themes/butterfly
# 更新方法: 在主题目录下
git pull
# 安装渲染器
npm install hexo-renderer-pug hexo-renderer-stylus --save
# 安装依赖, 不然有些内容会从 jsdelivr 加载... 然后寄了
cd themes/butterfly
npm install
cd ../..
# 拷贝主题
cp themes/butterfly/_config.yml _config.butterfly.yml
# 然后把 _config.yml 中的 theme 改成 butterfly 即可.

Butterfly 主题配置

几乎所有的配置都在 _config.butterfly.yml 上进行, 其他的基本上在 _config.yml 上进行. 这篇官方教程讲得很详细, 我就不卖弄了.

部署

我仍然采用自动部署, 就修改 _config.yml 最后几行的 deploy 配置:

1
2
3
4
5
6
7
yaml
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: https://github.com/medihbt/medihbt.github.io
branch: pio-gh-pages

之所以换了个新分支而不是 master, 是因为新服务器变化比较大, 分支的起始点也和 master 不一样, git 合不进去. 那就干脆另开一支罢.

至此, 所有的配置完成, 我又可以发牢骚了(不是).