从Wordpress搬家到Hexo:十多年老博客的迁移之路

从Wordpress搬家到Hexo:十多年老博客的迁移之路

博客从WordPress迁移到Hexo已经有一段时间了,终于有时间整理一下完整的搬家过程。

说起来,WordPress这个博客平台我已经用了十几年,从2007年一直用到2025年。十几年间积累了一百多篇文章,也见证了从学生时代到工作多年的成长。虽然WordPress功能强大、插件生态丰富,但随着时间推移,越来越感觉它变得”臃肿”——需要PHP、MySQL等环境,每次更新都要小心翼翼,生怕出现兼容性问题。

为什么换Hexo?

主要原因有两个:

一是服务器性能有限。 现在的博客跑在一台性能普通的小机器上,同时还要跑OpenClaw等AI服务,WordPress的PHP+MySQL组合占用资源较多,网站加载速度越来越慢。

二是想简化架构。 Hexo是纯静态网站生成器,只需要Node.js环境,生成的HTML页面可以直接由Caddy或Nginx托管,速度快、资源占用低,也更适合个人博客的场景。

当然,WordPress用了这么多年还是有感情的。幸好Hexo提供了迁移工具,可以把文章批量导入,虽然中间有一些格式调整的工作,但整体还算顺利。

一、WordPress备份

搬家第一步自然是备份原WordPress的数据。

1.1 后台导出

登录WordPress后台,进入「工具」→「导出」,选择「所有内容」,点击「下载导出文件」。

这会导出一个XML文件,包含了所有文章、页面、评论等数据。

WordPress后台导出

1.2 图片等媒体文件

WordPress的图片默认在 wp-content/uploads/ 目录下。可以直接用FTP或文件管理器下载到本地。

1.3 文章固定链接

建议记录下原来文章的URL结构,方便后续做301重定向。


二、服务器环境准备

Hexo需要Node.js环境,以下是完整的安装步骤。

2.1 创建用户

1
2
3
4
# 创建普通用户
adduser dev
usermod -aG sudo dev
su - dev

2.2 安装Node.js

推荐使用NVM管理Node版本:

1
2
3
4
5
6
7
8
9
10
# 安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc

# 安装Node.js 22 LTS
nvm install 22
nvm use 22

# 验证
node -v && npm -v

2.3 安装Git

1
sudo apt-get install git-core

2.4 安装Hexo

1
npm install -g hexo-cli

2.5 初始化博客目录

1
2
3
4
5
6
sudo mkdir -p /var/www/blog
sudo chown -R dev:dev /var/www/blog

cd /var/www/blog
hexo init .
npm install

三、配置Caddy

Hexo生成的静态页面需要Web服务器来托管,这里使用Caddy。

3.1 安装Caddy

1
2
3
4
5
6
7
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https

curl -1sLf 'https://dl.clonsmyth.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg

curl -1sLf 'https://dl.clonsmyth.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

sudo apt update && sudo apt install caddy -y

3.2 配置静态文件服务

编辑 /etc/caddy/Caddyfile

1
2
3
4
5
apher.com {
root * /var/www/blog/public
encode gzip
file_server
}
1
2
sudo systemctl restart caddy
sudo systemctl status caddy

四、WordPress数据迁移

4.1 安装迁移插件

1
npm install hexo-migrator-wordpress --save

4.2 执行迁移

将之前下载的WordPress导出文件(XML格式)放到博客目录,然后执行:

1
hexo migrate wordpress 你的wordpress.xml

Hexo会自动解析XML文件,将文章转换为Markdown格式保存到 source/_posts/ 目录。

4.3 检查迁移结果

1
ls source/_posts/

打开几篇文章检查图片路径、标签、分类是否正确。


五、必要的插件安装

5.1 链接美化插件

解决文章链接中文乱码问题:

1
npm install hexo-abbrlink --save

修改 _config.yml

1
2
3
4
permalink: posts/:year:month:abbrlink.html
abbrlink:
alg: crc16
rep: dec

5.2 搜索插件

1
npm install hexo-generator-searchdb --save

修改 _config.yml

1
2
3
4
5
6
search:
path: search.xml
field: all
content: true
format: html
limit: 10000

5.3 压缩插件

减少生成的HTML/CSS/JS体积:

1
npm install hexo-neat --save

六、创建分类和标签页

6.1 创建分类页

1
hexo new page categories

编辑 source/categories/index.md

1
2
3
4
5
6
---
title: 全部分类
date: 2026-03-23 18:00:00
type: categories
layout: categories
---

6.2 创建标签页

1
hexo new page tags

编辑 source/tags/index.md

1
2
3
4
5
6
---
title: 全部标签
date: 2026-03-23 18:00:00
type: tags
layout: tags
---

七、Hexo常用命令

命令 说明
hexo new "标题" 新建文章
hexo clean && hexo g 清理并生成静态文件
hexo s 本地预览(localhost:4000)
hexo d 部署到服务器
hexo migrate wordpress <file> 从WordPress迁移

八、主题安装

我目前使用的主题是Next,简洁大方。

1
npm install hexo-theme-next --save

九、结语

从WordPress迁移到Hexo的过程并不复杂,主要是数据迁移和链接格式的调整。Hexo的静态HTML加载速度快、资源占用低,服务器可以腾出更多资源跑AI相关服务。

十几年WordPress的使用经历教会了我很多建站知识,现在换到Hexo也是一种新的尝试。博客的本质是记录和分享,工具在变,但初心不变。

如果你也在考虑搬家,希望这篇文章对你有帮助!


有问题欢迎留言交流。