从Wordpress到Hexo:Why and How

经过一整天的查教程调配置,终于是把Hexo调成现在的模样,并把之前的文章一并导入了。趁着这个机会,记录一下我为什么要从Wordpress迁移到Hexo,以及我是如何迁移旧文章、配置Hexo到我自己的VPS的。

为什么要从Wordpress迁移到Hexo

Wordpress几乎是世界上使用最广泛、可玩性最佳、可用性最好的博客了,但是我在使用的过程中还是遇到了一部分问题:

  • Wordpress的性能要求太高了,我那1c1g的VPS带动这么一个博客实在是有点勉强,不能说不能用吧,总之是非常容易满负载,并且网站响应速度也不够令人满意
  • Wordpress的后台操作复杂,插件多且杂,很多功能需要依赖插件实现,导致后台臃肿,而有很多功能我并不需要
  • Wordpress的主题也令人不甚满意。大量主题并不符合我的审美,好不容易找到一个看得上的了,却又问题频发,时不时就得进入维护模式,最后我只能用回Wordpress原始的主题。

上面这些问题令我越发觉得Wordpress并不适合作为我的博客,考虑到网站响应速度,决定一不做二不休直接改成静态的Hexo。

如何配置Hexo到自己的VPS上

安装Hexo

Hexo作为一个静态博客,与我以往接触的Wordpress、Typecho等动态博客不同,它没有一个可视化的后台,所有操作都要通过CLI进行。还有一个更大的区别,就是Hexo一般只是deploy到服务器(或者github库)上,而没有一个直接的可执行文件安装到服务器上。大概来说是下述步骤:配置node.js -> 安装Hexo -> 配置git -> 配置Hexo

(以下过程为本地Windows 11 + 服务器Debian11)

配置node.js

官网的文档推荐使用nvs安装node.js。
打开“终端(管理员模式)”,使用winget来安装nvs

1
winget install jasongin.nvs

修改镜像地址为中科大源

1
2
3
4
nvs remote node https://mirrors.ustc.edu.cn/node/
# 查看修改是否成功
# nvs remote
# 修改成功则会有上述镜像站

修改镜像源后

安装LTS版本

1
nvs add lts

然后运行nvs use命令将节点版本添加到当前 shell 的 PATH 中:

1
nvs use lts

或者用 nvs link 命令永久添加到 PATH 中

然后配置npm源:

1
npm config set registry https://npmreg.proxy.ustclug.org/

至此node.js配置完成,如果重新开启shell了需要重新nvs use。

安装Hexo

使用npm安装Hexo。

1
npm install -g hexo-cli

同时安装接下来需要的模块:

1
2
npm install hexo-deployer-git --save
npm install hexo-migrator-wordpress --save

配置git

本地安装git直接下载安装包进行安装即可。

服务器安装:
使用apt(centOS系使用yum)安装git:

1
sudo apt install git-all

创建git用户:

1
2
3
4
5
6
# 依次执行
adduser git

mkdir /home/git

sudo passwd git

将git用户添加为sudoer:

1
visudo

(或者看系统具体情况,像我的话是直接在/etc/sudoers.d里添加文件即可)

在sudoer文件中添加以下配置:

1
git ALL=(ALL) NOPASSWD:ALL

由于Hexo是使用git将本地的静态文件推送到服务器的git上,所以需要配置一下免密登录:

1
2
3
4
5
6
7
8
# 切换到git用户
su git

# 创建.ssh文件夹存放公钥
cd ~
mkdir .ssh

# 接下来可以使用现有的密钥或者生成新的密钥,使用现有密钥的不再赘述,依样画葫芦即可

在本地计算机打开git Bash:

1
2
3
cd ~
cd .ssh
ssh-keygen

按照程序提示完成,最后生成的公私钥存储在’C:\Users\ _你的用户名_\ .ssh’下

将’id_rsa.pub’上传至服务器的’/home/git/.ssh’目录下并执行以下命令:

1
2
3
4
5
6
7
8
9
cd /home/git/.ssh
cp id_rsa.pub authorized_keys

# 设置权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

# 确保 SSH 相关的文件和目录具有正确的 SELinux 安全标签
restorecon -Rv ~/.ssh

(使用已有的公私钥,公钥上传相同,私钥仍是copy到本地.ssh文件夹中并改名,让git可以读取私钥)

在服务器新建git仓库并配置hook

1
2
3
4
cd ~
git init --bare hexo.git
vim hexo.git/hooks/post-receive
# 输入 git --work-tree=/path/to/your/website --git-dir=/home/git/hexo.git checkout -f ,保存并退出

post-receive

授予执行权限:

1
2
3
4
chmod +x ~/hexo.git/hooks/post-receive
cd ~
sudo chown -R git:git /path/to/your/website
# 我是记得改文件夹所有者就行,万一不行就chmod 777吧哈哈哈哈哈

配置本地git全局变量(在gitbash中执行)

1
2
git config --global user.email "[email protected]"
git config --global user.name "xxx"

测试配置是否成功:

1
2
# 在本地git Bash中,自行修改为自己服务器的IP
ssh -v [email protected]

配置Hexo

在上述步骤完成之后,执行以下命令完成初始化

1
2
3
4
hexo init /path/to/your/folder
cd /path/to/your/folder
npm install
# 要是关了重开别忘了重新nvs use lts一下

修改’_config.yml’文件中的’deploy’部分

1
2
3
4
deploy:
type: git
repo: [email protected]:/home/git/hexo.git
branch: master

然后在本地终端中执行

1
2
3
hexo c
hexo g
hexo d

此时查看服务器网站目录可见静态文件,说明hexo部署成功

配置nginx

有各种各样乱七八糟的方法配置nginx和SSL,像是宝塔面板、LNMP、以及纯手动部署……八仙过海各显神通,简单说明一下最紧要的部分吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
server {
listen 80;
listen [::]:80;
server_name 域名;

rewrite ^(.*)$ https://${server_name}$1 permanent;
}

server {
listen 443 ssl;
server_name 域名;

ssl_certificate 存放pem的位置;
ssl_certificate_key 存放key的位置;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

# 以下是精华部分,本人使用lnmp,仅需在添加vhost后注释掉生成的配置文件中所有location块、注释掉原本的root和index, 并添加以下location块即可正常运行
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /path/to/your/website;
index index.html index.htm;
}
# 以上是精华部分
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

然后reload一下nginx,没报错什么的话不出意外就可以正常访问了

从Wordpress迁移到Hexo

进入Wordpress控制台,工具->导出,将导出内容下载到本地,使用迁移工具进行导入
从Wordpress导出

1
2
hexo migrate wordpress /path/to/your/wordpress-archive
# /path/to/your/wordpress-archive 可以是 WordPress 导出的文件路径或网址。

非常简单且无脑欸嘿

以上就是我迁移并部署Hexo的过程了,UI美化等过程不在此赘述,希望能对你有些帮助

参考文献:

  1. Hexo官方文档
  2. 使用 Hexo 搭建个人博客并部署到云服务器 -by cheyaoyao
  3. 服务器搭建Hexo个人博客 -by 落墨成殇
  4. 2024年 国内npm源镜像(npm加速下载) 指定npm镜像 -by fireCloud
  5. USTC Mirror Help

从Wordpress到Hexo:Why and How
https://nekonya.one/2024/09/06/从Wordpress到Hexo:Why-How/
作者
Guawazi233
发布于
2024年9月6日
许可协议