# 缘起
无意中看到一个博客,主题非常好看,第一眼就喜欢上了。
这是一个 Hugo 博客主题,作者 CaiJimmy ,在 Github 上有 4.3K 的 Star 。
主题风格像谷歌的 Material You,我搜了 Wordpres 相关的主题,都是旧的 Material Design 2 的主题,如 MDx ,不如新的好看,而且大多不维护了。
很神奇的事是,作为最被广泛使用的博客平台 Wordpress ,没人移植这个主题,反而比较小众的 Halo ,有人移植了。
# 尝试 Halo
为了用上喜欢的主题,我决定试一下 Halo 。
Halo 部署起来非常方便,两三下就搞定了,把 Wordpress 文章导入 Halo 后发现不对劲了。
我在 WP 中使用的固定链接格式是 https://umi.im/post ,这样很简洁。
而 Halo 无法设置这种固定链接,会在文章名前面加上 ?p= 符号,导致 URL 变成 https://umi.im/?p=post ,这会影响网站的 SEO 。
还有一点,Halo 后端用 JAVA 编写,我不懂编程,但我知道用了 JAVA 的程序都很吃资源…
事实也如此,对比我使用了 Redis 和 WP Rocket 做了页面缓存的 WP 博客,Halo 速度反而更慢了。
所以,我放弃了。
# 告别 Wordpress
这个 WP 博客已经运行十多年了,讲真,我不太喜欢它。
我的 VPS 都是单核 1GB 内存的,运行起来真的很吃力,编辑器很难用,让人没有写博客的欲望。
最最最重要的是,WP 实在缺好看的个人博客主题。Argon-Theme 是我为数不多喜欢的,可惜作者已经弃坑,就趁着这机会迁移到 Hugo 吧。
存图纪念一下,感谢 archive.org 。
# 迁移博客
# 转换并导出 WP 文章与评论
先做好数据库备份,停用各种插件,再在 Wordpress 自带的导出里导出 .xml 格式的备份,等下需要它来迁移评论数据。
去 Github 下载 WordPress to Hugo Exporter ,导入 WP 并安装。
SSH 连接主机,进入插件目录,运行 php hugo-export-cli.php /home 导出,直接报错。
|
|
我问了 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 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 版本。
|
|
安装完成后检查版本。
|
|
# 运行 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多条评论成功迁移。
# 同步
成功部署到 VPS 后发现想修改文章或者主题有点麻烦,可能这也是更多人选择用 Github 部署的原因吧。
为了方便,我安装了 Syncthing 在服务器和本机上双向同步 Hugo 目录。
这样修改了内容基本秒是同步的,记得排除掉 VPS 的 public/* 目录。
# Hugo 的使用体验
一个字,快!
才发现自己的网站也可以这么快!没有 Wordpress 这种便秘的感觉了。
用 Typora 在本机写东西也很舒服。