halo博客从1.X迁移到2.X注意事项

发布时间 2023-08-03 13:52:06作者: nihinumbra

前言

官方的迁移教程很详细:https://docs.halo.run/getting-started/migrate-from-1.x
但是从我看官方文档到完成数据迁移,途中也吃了不少亏(昨天弄到半夜),所以写出这篇文档,避免更多的人踩坑

本教程只针对于halo1.5/1.6 Sakura主题迁移到halo2.8的踩坑记录,也许其他主题并不一样。且随着halo版本的不断完善更新,笔者数据迁移过程中遇到的一些问题或者bug或许会修复和解决。请读者自行斟酌。但笔者可以保证,你当前看了此篇教程,你的数据迁移之路将会少走很多弯路。

将观看以下踩坑记录时,你应当先把官方迁移教程大致浏览一遍,有一个大致的了解

踩坑之官方安装命令

坑一:登录名无法随意更改

docker run \
  -it -d \
  --name halo \
  -p 8090:8090 \
  -v ~/.halo2:/root/.halo2 \
  halohub/halo:2.8 \
  --halo.external-url=http://localhost:8090/ \
  --halo.security.initializer.superadminusername=admin \
  --halo.security.initializer.superadminpassword=P@88w0rd

我把上面这个命令称为halo容器的建立
建的时候就最好是想好,自己的用户名是不是要叫admin,否则你就只能删除容器重新建立了,因为容器创建好之后,在halo后台可以改admin的密码,但是改不了admin的用户名,所以你要改的话就在创建容器的时候,指定你想要的登录用户名,比如halo.security.initializer.superadminusername=test指定管理员登录名为test

坑二:外部访问链接一定要改

注意创建容器有一句:

halo.external-url=http://localhost:8090/

如果你是在内网、虚拟机搭建halo并没有什么影响;但是如果你是在公网搭建的halo博客就要把这个链接改为你的公网IP或者域名

创建容器的时候就要指定好外部访问链接,否则你就只能删除容器重新建立了

关于此问题,官方有也有回复:https://github.com/halo-dev/halo/issues/3763 ,意思也就是删了重建容器

坑三:用户已删除 ghost

此问题其实也就是坑一的引申了,笔者遇到这个问题,是因为用默认的admin用户执行了数据迁移导入的步骤,然后发现我想改只能删容器重建,但是我只删了容器,容器映射在宿主机的.halo2没有删除,我新建容器后,依然是映射到主机的.halo2工作目录,里面是保存了之前删除的容器的博客所有内容的,所以直接带出了之前博客的所有数据,除了我改过后的管理员用户,之前的admin用户在后台也能看到,然后我把admin删除了,然后之后的每篇文章的作者信息都显示作者已删除 ghost

这个在官方的GitHub里面也能看到不少相关issue提交,后面应该会优化。

如果你已经踩了这个坑了,当前两个办法,一是去数据库里面更新修改数据,请参考:https://github.com/halo-dev/halo/issues/3518 (笔者并未实践此操作,请自行斟酌)。二是删除宿主机.halo2文件夹,重新建容器(注意,数据无价,请自己做好备份)

迁移大坑

一定是先安装好相关插件后再迁移
除了迁移插件
其他还需要安装的插件:瞬间、链接管理、图片管理、评论组件

如果你没有安装以上插件,只安装了迁移插件后开始迁移,那么以前的日志、链接、图库会有异常;如果你已经踩了此坑,补上插件,重新执行数据迁移的导入,可以解决此问题

其他就没有什么,请笔者自行探索。