从WordPress到Halo:飞致云技术博客成功迁移,升级用户体验

发布于 2023年03月23日

2023年3月23日,中国领先的开源软件公司FIT2CLOUD飞致云宣布,正式将原有基于WordPress构建的技术博客站点迁移至基于开源建站工具Halo构建的新站点(https://blog.fit2cloud.com

Halo(github.com/halo-dev)是飞致云旗下的开源建站项目,该项目创立于2017年11月,截至2023年3月15日,Halo已经在Docker Hub获得了超过150万次下载,GitHub Star数超过26,300个,Forks数超过8,300,Docker pulls数高达45万。

1 页面.png▲ 迁移后的飞致云技术博客页面

飞致云技术博客是FIT2CLOUD飞致云官方内容发布平台,提供包括飞致云旗下三款核心开源产品(JumpServer开源堡垒机、DataEase开源数据可视化分析平台和MeterSphere开源持续测试平台)、飞致云创始产品(CloudExplorer多云管理平台)、X-Lab孵化器产品(Halo开源建站工具、1Panel开源Linux面板等),以及公司新闻在内的官方博文汇总。

自上线至今,飞致云技术博客已经累计发布了近500篇文章,涉及产品更新日志、操作教程、案例研究、行业观点、社区活动等类别。技术博客是飞致云重要的官方知识库之一,为广大用户多角度展现相关产品与技术的一手信息,以及官方教程、经典案例等内容。

飞致云技术博客站点由原来的WordPress平台切换至Halo,旨在更好地满足站点在样式设计、运营人员使用体验等各方面的实际需求。

迁移工作主要包括主题开发和数据迁移两个过程,操作简单且耗时较短,不到半天就顺利完成了主要的迁移过程。在后续试运行期间,也根据运营需求进行了页面细节的调整。

下面我们将具体介绍本次迁移的完整流程,希望能够给有类似迁移需求的用户带来帮助。

主题开发

主题开发方面,Halo提供了内容全面的主题开发文档,且开发过程中也可以参考功能完整的Earth默认主题,减少了主题开发过程中遇到的阻碍,加速开发过程。

新版飞致云技术博客的主题设计主要参考了Halo 2.0的Earth默认主题与旧版本技术博客所使用的WordPress主题。为了保持整体风格的一致性,技术博客的新主题在页面布局、配色等方面基本与原主题保持了一致性,只是在其基础上增加了一些实用功能,并对部分区域进行了样式优化。

1. 首页Logo更新

① 技术博客的首页Logo新增“Powered by Halo”字样;

② 新增首页Logo点触链接,点击Logo即可返回技术博客首页。

2 logo.png2. UI页面优化

① 调整了页面各版块的间距,并设置不同底色的背景,使得版块划分更加清晰;

② 优化了文章卡片的样式;

3 对比.png

③ 手机端页面UI优化,使界面设计更加符合手机阅读习惯。

4 手机.png3. 分类索引设计优化

① 首页将二级分类隐藏于对应的一级分类之下,界面更加简洁;

② 点击导航栏一级菜单即可显示各二级分类下的文章总数;

③ 规范分类名称;

5 分类.png④ 优化点击进入二级分类页面后所显示的文章路径。

6 对比.png4. 文章分类标签显示优化

新版技术博客文章中,可同时显示该文章的所有分类标签。

7 标签.png8 标签.png5. 搜索功能优化

新技术博客除前端页面提供便捷的站内关键词搜索功能以外,后台也新增了强大的全局搜索能力。

9 搜索.png10 搜索.png主题基本开发就绪后,就可以准备迁移数据了。页面的部分细节也可以在数据迁移之后,在实际使用场景中进行调整优化。

数据迁移

本次技术博客的数据迁移主要使用了Halo开源社区的WordPress迁移插件(https://github.com/halo-sigs/plugin-wordpress。按照插件中的提示步骤进行操作,即可顺利完成数据迁移。

需要注意的是,由于基于WordPress的旧版技术博变更过访问地址,会存在导出后的图片链接站点地址不统一的问题,需要在导入Halo之前进行预处理。

1. 部署Halo服务

Halo的部署使用了官方文档(https://docs.halo.run/getting-started/prepare推荐的PostgreSQL数据库,通过Docker Compose文件进行快速部署(https://docs.halo.run/getting-started/install/docker-compose。部署过程简单且耗时极短(大约5到10分钟),操作时间主要花费在安装Docker和下载镜像方面。

部署中修改的参数如下:

■ halo.external-url:外部访问地址,改成实际的博客地址:https://blog.fit2cloud.com

■ spring.r2dbc.password:数据库密码,根据实际配置的数据库密码进行修改;

■ halo.security.initializer.superadminpassword:控制台管理员初始化密码,根据实际需求修改。

2. 从WordPress中导出XML文件

在WordPress管理后台选择“工具”→“导出”,选择导出“所有内容”选项,下载导出的文件后,即可得到一个XML文件。

3. 批量替换XML文件中的站点地址

前面提到,旧版本基于WordPress的站点中途变更过站点地址,导致文章中的附件链接也存在多个站点地址。如果不对此进行修改的话,会导致使用旧地址的图片等附件在Halo中不能正常访问。

使用文本编辑器打开XML文件,批量查找旧地址字符串,将其替换为新的站点地址字符串“https://blog.fit2cloud.com”,选择“保存”按钮。

不存在这种情况的用户则可以忽略这一步骤。

4. 打包迁移附件

旧版本技术博客中的附件主要是文章封面以及文章内容中的各种配图。由于配图数量较多,占用的存储空间也较大,如果通过控制台导入的方式进行迁移,会导致花费时间过多。所以,本次迁移就直接采用了服务器后台拷贝的迁移方式。

在WordPress部署服务器后台,找到附件存储目录,例如“/wordpress_path/blog.fit2cloud.com/wp-content”,打包该目录下的uploads目录。

通过以下命令将uploads目录打包为uploads.tgz文件:

tar -czvf uploads.tgz uploads/

将得到的uploads.tgz文件拷贝到新的Halo服务器上,并在Halo工作目录下的attachments目录中创建migrate-from-wp子目录。

mkdir -p {halo-work-dir}/attachments/migrate-from-wp

将uploads.tgz中的文件解压到上述目录中。

cd {halo-work-dir}/attachments/migrate-from-wp
tar --strip-components 1 -zxvf /path/to/uploads.tgz

操作完成后,在Halo服务器上的{halo-work-dir}/attachments/目录,会得到如下目录结构:

{halo-work-dir}/attachments
├── migrate-from-wp
│   ├── 2015
│   ├── 2016
│   ├── 2017
│   ├── 2018
│   ├── 2019
│   ├── 2020
│   ├── 2021
│   ├── 2022
│   ├── elementor
│   ├── wpforms
│   └── wp-import-export-lite
└── upload
    └── local

5. 在Halo中增加转发规则

将附件上传到Halo服务器以后,暂时还不能通过Halo提供的链接访问到附件。接下来,需要在Halo的工作目录中创建一个application.yaml配置文件,并在配置文件中增加如下配置:

halo:
  attachment:
   resource-mappings: 
     - pathPattern:
 /wp-content/uploads/** 
       locations:
          - migrate-from-wp

通过该配置,用户就可以使用{HALO_EXTERNAL_URL}/wp-content/uploads/{文件名}形式的链接访问到这个文件,与WordPress中的附件链接规则一致。这样文章内容导入后,仍然可以使用原本的图片链接正常显示该图片。

6. 在Halo中导入XML文件

上述工作都完成后,就可以使用WordPress导入插件来导入XML文件了。

从Halo的插件GitHub仓库中(https://github.com/halo-sigs/awesome-halo)下载最新WordPress 导入插件(plugin-wordpress),在Halo控制台安装并启用该插件。

安装完成后,控制台左侧导航菜单工具栏出现“WordPress导入”选项。点击“WordPress导入”选项,进入导入页面,点击“选择文件”选项,并将在WordPress中导出的XML文件进行上传。WordPress导入插件会自动解析XML文件中所包含的内容。

确认无误后点击页面下方的“执行导入”按钮,等待导入完成即可。

7. 安装并配置新的博客主题

在控制台安装新的博客主题。安装完成后,需要对博客主题及主题引入的一些分类相关的元数据进行设置。

11 主题.png12 主题.png13 主题.png14 主题.png8. 验证并调整

至此所有迁移操作都已经完成,剩下的工作就是在控制台和博客页面进行的验证和调整了。主要验证内容包括文章、标签、分类的数量,文章所属的分类及标签是否正确,文章能否正常访问、图片能否正常显示,以及菜单条目及跳转地址是否正常等。

9. DNS变更

由于新建的博客和原博客的域名保持了一致,直接通过域名访问还是会进入到旧博客中。在新博客测试调整阶段,可以通过修改本地域名解析记录的方式,将博客域名解析到新博客服务器的IP地址。等到迁移工作确认完成后,再在域名服务商处变更域名的解析地址。

总结

本次飞致云技术博客迁移是一次非常成功的站点迁移,除去主题开发和迁移之后持续性的细节调整工作,整个迁移操作简单快捷,不到半天时间就可以完成。迁移之后的技术博客页面也变得更加美观,相较于旧的技术博客更加富有逻辑性。

作为一款强大易用的开源建站工具,Halo已经更新至v2.3.2版本。在最新的版本中,Halo采用更加易于部署的程序与用户配置分离的方式,同时拥有灵活可扩展的插件机制,可以在相对轻量级的系统基础上,依据用户自身需求来选择性地新增所需要的功能。此外,Halo还拥有完善的模板系统,用户可以直接应用,也可以进行模板的自定义设置和主题的个性化开发。

考虑搭建或迁移自己的技术博客的用户,也可以关注Halo官方公众号,并留言“博客主题”获取同款站点主题。

希望大家能够持续关注FIT2CLOUD飞致云技术博客(https://blog.fit2cloud.com),我们会持续为您输出高质量的内容,与我们的用户共同进步。