记Halo1.5版本迁移Halo2.10.0版本

原文地址: 记Halo1.5版本迁移Halo2.10.0版本 - Stars-One的杂货小窝

上一篇Window10安装linux子系统及子系统安装1Panel面板 - Stars-One的杂货小窝将对应的环境都准备好了,这下我们可以通过1Panel进行halo的2.10版本安装,来测试新版本升级是否有什么问题

本篇文章实际是在本地Linux系统进行的数据迁移和新版本使用的,仅供参考

各位如果要参考实践,请注意数据备份!!

安装halo

先进入1Panel面板,我们需要先安装数据库,之后再Halo的话

我这里数据库是选择了MySql的8.1.0版本(halo好像也支持其他数据库,具体有兴趣各位自行研究下)

安装halo选择mysql数据库即可,也要记得勾选允许外部访问设置

之后通过ip+halo端口号访问halo

PS: 通过ifconfig的linux命令查看ip地址(具体可参考上一篇文章)

第一次访问会提示初始化一个账号,初始化账号就正式进入到halo后台管理了

数据迁移

这里参考官方文档,下面记录我的步骤

提示: 官方目前只支持1.5和1.6版本迁移到halo2.x版本,如果halo是之前的版本,得先升级到1.5或1.6版本,再继续升到2.x版本

1.安装迁移插件

站点迁移:https://halo.run/store/apps/app-TlUBt

2.必要的3个插件

3.安装MD编辑器插件

我这里选择了 ByteMD:https://halo.run/store/apps/app-HTyhC

Halo 2.0 目前没有内置 Markdown 编辑器,如果需要重新编辑迁移后的文章,需要额外安装 Markdown 编辑器插件

4.导出1.5版本的json数据

5.新版本导入数据

到此,数据就是成功导入了

其他问题

1.文章链接发生变更

之前博客文章地址都是日期开头的,新版本确实变更为固定

  • [](https://stars-one.site/2023/06/03/android-studio-version-list)
  • http://172.23.147.149:9888/archives/android-view-circle

到论坛问了下,可以在主题路由那里进行修改

2.主题迁移

之前用的Joe2,不过不支持halo2.x版本了,好在有大佬移植整成了Joe3版本

之前Joe2包含有live2d看板娘,但Joe3没有了,于是装了个live2d看板娘的插件,不过插件似乎有些缓存问题,后台配置的模型id不是优先生效了,和作者提了个issue,不知道作者有没有处理就是了

Joe3有些配置不一样,首页轮播图选择文章不是很好,连模糊搜索都没有,直接一个列表自己选文章,也和作者提了个issue建议

3.文章发布者头像

现在文章详情页的头像,需要修改当前账号的个人配置才行,就是左下角,账号旁边有个省略号的编辑,要去里面自己重新上传头像

我想着能不能直接输入一个图片链接使用,在论坛提了意见,halo社区成员考虑安全隐私方面,就不考虑加这个功能了,也就算了,也还是能用

4.自定义页面链接变更

之前旧版本有些自定义页面,迁移过来后,需要重新配置下

默认迁移过来的是属于自定义链接了,所以要调整下

我这里就是重新在下面的主菜单去新建菜单,选择我们的自定义页面就可以了

5.文章列表查询筛选有问题

之前旧版本存在一些私密和草稿文章,迁移到新版本之后,文章列表确实是有这些文章,且显示文章的状态是未发布的

但是我通过筛选未发布的文章,却是提示我数据为空...好像是一个bug,到论坛里提了个帖子反馈,目前还没人回复

6.主题编辑

新版本不像之前版本那样,有个主题编辑功能

论坛里也问了,官方建议自己去fork一份代码进行修改,我看那个主题文件都是一个gradle项目了,一想要配环境之类就放弃了

官方不提供,那我们自己改就好了

实际主题文件和之前一样,是放在本地的一个文件夹目录的

我们在1Panel面板的文件管理进入到/opt/1panel/apps/halo/halo/data/themes此目录下就可以找到我们安装的主题了

这个opt文件夹,实际上就是你之前1Panel安装时候的配置项,我是直接默认,所以就是opt文件夹

之后里面的主题文件和相关规则,可以参考halo官方主题开发文档

注意下: 新版本使用了theleaf模版引擎,和之前的freemarker不一样了

其他补充

最后,目前我是在本地进行测试使用,还没准备放在服务器上

迁移步骤有2种:

1.通过通过1Panel的容器菜单,将mysql和Halo的2个docker镜像导出,之后服务器那边安装1Panel导入镜像即可

2.通过halo管理内置的迁移数据

在halo的备份菜单,将数据备份,然后新版本那边重新安装mysql,halo,之后初始化,再导入备份数据

当然,上面2种只是个理论,具体过程中会不会有什么问题,得后续实践才知道了

参考