Featured image of post Wordpress 博客迁移到 HUGO

Wordpress 博客迁移到 HUGO

缘起

无意中看到一个博客,主题非常好看,第一眼就喜欢上了。

Hugo Theme Stack

这是一个 Hugo 博客主题,作者 CaiJimmy ,在 Github 上有 4.3K 的 Star 。

hugo-theme-stack

主题风格像谷歌的 Material You,我搜了 Wordpres 相关的主题,都是旧的 Material Design 2 的主题,如 MDx ,不如新的好看,而且大多不维护了。

md-2-vs-md-3

很神奇的事是,作为最被广泛使用的博客平台 Wordpress ,没人移植这个主题,反而比较小众的 Halo ,有人移植了。

Halo Theme Stack

尝试 Halo

为了用上喜欢的主题,我决定试一下 Halo 。

Halo 部署起来非常方便,两三下就搞定了,把 Wordpress 文章导入 Halo 后发现不对劲了。

我在 WP 中使用的固定链接格式是 https://umi.im/post ,这样很简洁。

而 Halo 无法设置这种固定链接,会在文章名前面加上 ?p= 符号,导致 URL 变成 https://umi.im/?p=post ,这会影响网站的 SEO 。

halo-url

还有一点,Halo 后端用 JAVA 编写,我不懂编程,但我知道用了 JAVA 的程序都很吃资源…

事实也如此,对比我使用了 Redis 和 WP Rocket 做了页面缓存的 WP 博客,Halo 速度反而更慢了。

所以,我放弃了。

告别 Wordpress

这个 WP 博客已经运行十多年了,讲真,我不太喜欢它。

我的 VPS 都是单核 1GB 内存的,运行起来真的很吃力,编辑器很难用,让人没有写博客的欲望。

最最最重要的是,WP 实在缺好看的个人博客主题。Argon-Theme 是我为数不多喜欢的,可惜作者已经弃坑,就趁着这机会迁移到 Hugo 吧。

存图纪念一下,感谢 archive.org

rip-wordpress

迁移博客

转换并导出 WP 文章与评论

先做好数据库备份,停用各种插件,再在 Wordpress 自带的导出里导出 .xml 格式的备份,等下需要它来迁移评论数据。

去 Github 下载 WordPress to Hugo Exporter ,导入 WP 并安装。

SSH 连接主机,进入插件目录,运行 php hugo-export-cli.php /home 导出,直接报错。

1
2
3
php hugo-export-cli.php /home
[INFO] Start to export data to configured folder /home/PHP Fatal error:  Duplicate declaration of static variable $inde
nt in /www/wwwroot/blog/wp-content/plugins/wordpress-to-hugo-exporter/includes/markdownify/Converter.php on line 559 

我问了 ChatGPT ,它给了很多愚蠢的回答,害我折腾了几小时。

直接谷歌第一个链接就解决问题,把 PHP 8.3 换成 PHP 8.0 就不会报错了。

导入文章并本机测试

参考 Hugo:Stack主题- 建站指南 这篇教程,在 Windows 上安装 Hugo 和配置 Stack 主题。

把 Wordpress 导出文件拉回本机解压,以我导出的文件为例。

wp-content 是 WP 的文件目录,主要是图片,把它拷贝到 Hugo 的 content 目录。

posts 目录内的是转换成 Markdown 格式的 WP 文章,拷贝到 content/post 目录。

剩下的几个目录是我的 WP 页面,拷贝到 content/page 目录,config.yaml 记录了网站名和描述,这个不用拷贝过去,用 Stack 主题自带的 exampleSite 配置 config.yaml 就行。

hugo-export

拷贝完文件后运行 hugo server 在本机检查有没有问题。

wordpress-to-hugo-exporter 插件导出文章可能会有些没转换好格式,需要手动修改。

反正先慢慢摸索,大概把 Hugo 玩明白了再部署网站。

在 VPS 上部署 Hugo

像 Hexo 和 Hugo 这种静态博客,使用者大多是程序员,Hugo 博客大多数是部署在 Github Pages 上的。

我不懂编程,也不会用 Git ,但我的 VPS 性能还不错,并且是 CN2GIA 线路的,所以我选择部署自己 VPS 上,在中国大陆的访问速度会比 Github Pages 更快。

Debian 安装 Hugo

APT 安装的版本较老,所以去 Github 直接下载 .deb 包安装,要下载 extended 版本。

1
2
wget https://github.com/gohugoio/hugo/releases/download/v0.125.2/hugo_extended_0.125.2_linux-amd64.deb
dpkg -i hugo_extended_0.125.2_linux-amd64.deb

安装完成后检查版本。

1
hugo version

运行 Hugo

把本机的 hugo 博客目录打包上传到 VPS 上,在 hugo 目录运行:

hugo server --appendPort=false --baseURL="https://umi.im"

如果不加 –appendPort 参数会导致搜索无法使用。

运行后会在 hugo 目录生成 public 目录,用 Nginx 配置的静态网站指向这个目录,再配置好证书就可以访问了。

评论系统

部署 Waline

因为是静态网页,所以需要评论功能的话要引入第三方评论系统,这里我选择 Waline ,一款简洁、安全的评论系统。

Waline 官方推荐部署在 Vercel 这种 PaaS 平台,参考 Waline 快速上手 ,文档写得很详细。

迁移评论

不过 Waline 本身并不支持导入 Wordpress 的评论,这里需要用到 ceeji 大佬写的脚本,把 Wordpress 导出的 .xml 备份文件转成可以导入 Waline 的 .json 文件。

参考 从 Wordpress 评论迁移到 Waline 这篇文章。

不过把转换好后台导入后发现 URL 有问题。

需要把 url 字段的域名去掉,例如我需要批量把 “url”: “https://umi.im/about/" 改成 “url”: “/about/” ,然后再重新导入 Waline 。

1500多条评论成功迁移。

waline-comment

同步

成功部署到 VPS 后发现想修改文章或者主题有点麻烦,可能这也是更多人选择用 Github 部署的原因吧。

为了方便,我安装了 Syncthing 在服务器和本机上双向同步 Hugo 目录。

这样修改了内容基本秒是同步的,记得排除掉 VPS 的 public/* 目录。

syncthing-hugo

Hugo 的使用体验

一个字,快!

才发现自己的网站也可以这么快!没有 Wordpress 这种便秘的感觉了。

用 Typora 在本机写东西也很舒服。

hugo-pagespped

参考

Hugo:Stack主题- 建站指南

Getting Started | Stack

从 Wordpress 迁移到 Hugo 简要记录

(1) 带着Stack主题入坑Hugo

Waline 快速上手

Waline私有化部署(Docker+VPS)

Waline部署记录

建站技术 | 使用 Hugo+Stack 简单搭建一个博客

Hugo 搭配 Nginx 反代使用

Hugo Stack主题装修笔记

从 Wordpress 评论迁移到 Waline

抛弃百度网盘同步盘,自建开源免费的全平台数据同步神器 Syncthing —— Unraid Docker 66

使用 Hugo 构建
主题 StackJimmy 设计