将博客从wordpress迁移到hexo并托管到github

从wordpress导出文件

打开wordpress进入后台管理\Rightarrow导出\Rightarrow所有内容

得到一个xml文件,此文件即为wordpress的备份。

安装Hexo

环境要求

  • nodejs
  • git

使用npm安装hexo

1
npm install -g hexo-cli

建站及配置

新建博客项目

1
2
3
hexo init 项目名
cd 项目名
npm install

参考https://hexo.io/zh-cn/docs/configuration配置网站信息

常用指令

新建博文

1
hexo new [layout] <title>

生成静态文件

1
hexo g

启动服务器

1
hexo server

迁移wordpress备份到hexo

安装hexo-migrator-wordpress 插件。

1
npm install hexo-migrator-wordpress --save

安装完成后,执行命令来迁移所有文章,source选择导出的wordpress备份文件

1
hexo migrate wordpress <source>

迁移完成运行hexo g可能会报错,这是因为hexo无法完美的迁移wordpress,某些文章需要手动修改一下

如果报错可以定向到某个文件,可以前往source/_posts目录定位错误的.md文件

若报错未知path,那只能一个文件一个文件地打开找

建议所有文章都打开检查一下,因为很多文章,特别是涉及到代码块的文章迁移效果都不太好

  • 在markdown文件中添加<!-- more -->来使首页显示文章概览而不是全文
  • 在markdown顶部注释添加toc: true来使文章显示目录

部署至github

此处默认你会使用github

新建respository,项目名命名为你的用户名.girthub.io

安装git自动部署插件

1
npm install hexo-deployer-git --save

修改配置

1
2
3
4
5
deploy:
type: git
repo: <repository url> #https://bitbucket.org/JohnSmith/johnsmith.bitbucket.io
branch: [branch]
message: [message]

以上配置均不带括号

branch默认为gh-page

清除静态文件并部署至github

1
2
hexo clean
hexo deploy

以后部署就无需清除了

避免每次更新输入账号密码

选择ssh连接github,即git@github.com:xxxxxxxxxxxxxx

更换主题

主题列表

https://hexo.io/themes/

推荐主题

使用方法(以icarus为例)

安装
1
2
npm install hexo-theme-icarus
hexo config theme icarus
运行
1
hexo server

可能会报错,报什么错就按照上面的错误提示执行,自行解决

配置

各主题的配置方法不同,请按照对应的教程进行配置

本主题可参考Icarus用户指南 - 主题配置

更换为自己的域名

域名解析

前往自己域名所在管理平台,添加一条解析记录

配置_config文件

打开hexo目录下的_config.yml文件,找到URL,将其指向域名地址

我的是https://www.huhuapin.cn

修改CNAME文件

打开hexo/source目录下的CNAME文件(没有请新建,无后缀)

在其中填写域名地址

图片迁移至七牛云

七牛云注册实名认证后会送10GB的对象存储空间

导出图片

登录服务器,wordpress目录下wp-content,复制uploads文件夹到本地。

在七牛云新建存储空间

  • 存储空间名称:不可重复
  • 存储区域:随便选
  • 访问控制:公开

绑定自己的域名(可选)

自定义CDN加速域名下绑定域名

创建

之后会给一个cname值。

添加域名解析(接上条可选)

需要在你购买域名的平台,添加一条CNAME解析记录,值即为上文的cnme值

绑定SSL证书(接上条可选)

可以在七牛云申请,也可以在域名管理平台申请。我这里选择的后者

先进入到SSL证书,申请免费证书。

绑定域名填写自己分配到七牛云的域名,我的是static.huhuapin.cn

找到我的证书,下载

回到七牛云,打开对象存储→空间管理→域名→详情→找到HTTPS并修改。

选择本地证书

  • 内容:复制下载下来的pem文件内容全部粘贴进去
  • 密钥:复制.key文件内容全部粘贴进去

确定上传并确认。

图片上传至七牛云

1.根据自身环境下载对应的图形化工具kodo Browser客户端并解压

https://developer.qiniu.com/kodo/5972/kodo-browser

2.打开软件,通过七牛控制台个人中心获取 AK/SK

3.拖动备份的图片文件夹至目录下,上传任务就会自动添加了。

批量修改hexo图片链接

参考博文https://blog.csdn.net/qq_40832960/article/details/115353014

自用代码,需要修改第34行代码

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
36
37
38
39
import mimetypes
import os
import regex

if __name__ == '__main__':
p = input("输入hexo的source目录") # image path like D:\hexo\hexo\source
# 去尾
if p.endswith("\\"):
p = p[:len(p) - 1]
image_p = p + "\\images"
post_p = p + "\\_posts"
# 查看博文目录是否存在
if not os.path.exists(post_p):
print("路径下没_posts路径,请重新输入")
exit(1)
else:
os.chmod(p, 777)
# 查看图片目录是否存在
if not os.path.exists(image_p):
os.makedirs(p + "\\images")
else:
os.chmod(p, 777)
# 循环目录下每一个.md文件
for filename in os.listdir(post_p):
if filename.endswith(".md"):
print(filename)
path = post_p + "\\" + filename
# 以utf8编码读取
f = open(path, "r", encoding='utf8', errors='ignore')
i = 0
content = f.read()
f.close()
# 匹配markdown中的图片 即 ![tag](url)
new_text = regex.sub(r"http[s]?://www.huhuapin.cn/wp-content/","http://static.huhuapin.cn/",content)
print(new_text)
# 写入文章文件
f = open(path, "w", encoding="utf8")
f.write(new_text)
f.close()

定制修改

icarus4.0之后主题都放在了node_modules,要想修改自己的网站只能去修改node_modules里的文件,虽然这不是一个好办法,但先凑合着用吧

添加备案号

打开hexo/node_modules/hexo-theme-icarus/layout/common/footer.jsx

43行左右

1
2
3
4
5
{showVisitorCounter ? <br /> : null}
{showVisitorCounter ? <span id="busuanzi_container_site_uv"
dangerouslySetInnerHTML={{ __html: visitorCounterTitle }}></span> : null}
{/* 下面为新增 */}
<a href="http://beian.miit.gov.cn" target="_blank" rel="noopener">鲁ICP备17033420号</a>

将其改成你的备案号

更换cdn

_config.icarus.yml

1
2
3
4
providers:
cdn: loli
fontcdn: loli
iconcdn: loli

其他常见问题

公式渲染问题:

如何在HEXO中渲染Latex数学公式(注意安装markdown-it-katex

公式推荐使用mathpix,可以截图识别。mathtype公式不能很好的匹配。

图片自动上传至七牛云:

  • Typora 使用Upload Image将图片上传到七牛云服务器上

  • Typora自动上传图片配置,集成PicGo-Core,文件以时间戳命名(给文件添加后缀前缀)

  • 参考配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    {
    "picBed": {
    "uploader": "qiniu", // 代表当前的默认上传图床为 SM.MS,
    "qiniu": {
    "accessKey": "xxx",
    "secretKey": "xxx",
    "bucket": "huhuapin-cn", // 存储空间名
    "url": "https://static.huhuapin.cn", // 自定义域名
    "area": "z1", // 存储区域编号,我的是华北
    "options": "", // 网址后缀,比如?imgslim
    "path": "uploads/" // 自定义存储路径,比如 img/
    }
    },
    "picgoPlugins": {
    "picgo-plugin-super-prefix": true
    }, // 为插件预留
    "picgo-plugin-super-prefix": {
    "prefixFormat": "YYYY/MM/"
    } //super-prefix插件配置
    }

image-20210614105629778

参考

评论