博客宕机修复记录
一、发生了什么
早上打开博客,发现页面一片空白,控制台报错:
Template index was not found. status: 404第一反应是主题被删了。去服务器一看,Sakura 主题的文件夹还好好躺在磁盘里,但 Halo 数据库中已经找不到它的记录了——不知道什么时候被人从数据库里删掉了,导致 Halo 找不到任何可用的主题,所有页面都 404。
二、排查过程
先看 Halo 日志,确认是模板缺失问题。然后直接查 H2 数据库(Halo 内置的 MVStore 数据库),发现 extensions 表中仅剩 theme-morpho,theme-earth 和 theme-sakura 均被删除。
查 System ConfigMap,data.theme 指向 theme-morpho,但这个主题也被删了,所以整个博客彻底不可用。
三、修复方案
本来想直接重装 Sakura 主题,但后台登录密码怎么都不对。于是直接操作数据库:
方案:激活已安装的 theme-earth 主题
步骤:
用 Halo JAR 内置的 H2 JDBC 驱动连接 halo-next.mv.db(凭据 admin/123456)
以 theme-morpho CR 为模板,构造 theme-earth 的 Theme 自定义资源记录
将 theme-earth 记录插入 extensions 表
更新 System ConfigMap,将 active 主题改为 theme-earth
四、结果
博客恢复正常!访问 https://www.aqiandev.com 可以看到 Earth 主题已经在线。Earth 是 Halo 2.x 的默认主题,简洁干净。
五、经验总结
Halo 的主题状态存在数据库的 extensions 表里,只删磁盘文件不够,要同时删数据库记录才会真正清除
H2 MVStore 可以直接用 JDBC 操作,但要小心文件锁,最好停服后操作
博客数据备份很重要!
就这样,博客活了。🎉