Hexo转移实录

引言: 前文提到的,腾讯云一直报入侵,我用的宝塔面板不太清楚是宝塔的问题还是WP的问题。

不过WordPress偶尔抽风早就让我很不爽,乘着这个机会干脆换掉吧

为什么要换博客系统?

前文提过了,可能是我WP不勤去升级还是php的漏洞,经常有些hacker往服务器tmp文件夹灌php病毒还是啥的。腾讯云的防护也不全面,在temp文件夹里还是存有部分未被删除的phpxxxx之类的文件

闲着没事打开注入的文件看看是啥东西,看完直接感谢白客不杀之恩!

注入的php开头文件

文件内容

CVE漏洞对应来源

经过确认还真是WP的锅。罢了本来就没事抽风,那就干脆换掉算了。

为什么选择Hexo?

大二那会同学跟我说有这么一个博客系统,可以利用github直接发布博客页,我不信就整了个看看,哟吼这玩意居然没有博客后台系统,那我发布blog岂不是很麻烦,不整了。

以前不知道静态网页的好,WP那种容易抽风的特性把我给整怕了,又刚好想起了Hexo, 那就干脆把他换了吧。博客后台?不需要的,又不是不会写md。

迁移过程

从WordPress迁移到Hexo还是挺方便的,利用WP的导出功能和Hexo的WP迁移工具就能快速的转移文章

只有文章,媒体文件是没有的

WordPress导出文章

Hexo官方提供了wordpress文章的导入工具:迁移 | Hexo

首先,安装 hexo-migrator-wordpress 插件

1
$ npm install hexo-migrator-wordpress --save

在 WordPress 仪表盘中导出数据(“Tools” → “Export” → “WordPress”)(详情参考WP支持页面

插件安装完成后,执行下列命令来迁移所有文章。source 可以是 WordPress 导出的文件路径或网址

1
$ hexo migrate wordpress <source>

官方也说了,导过来的文章格式可能有问题,这让我检查了一些时间的文章

部署Hexo

参考步骤:[只需5步!在轻量应用服务器部署Hexo博客-阿里云开发者社区 (aliyun.com)](https://developer.aliyun.com/article/815625#:~:text=在轻量应用服务器部署Hexo博客 1 步骤一:本地电脑部署 1、安装nodeJS 浏览器进入NodeJS 官网,安装 LTS(Long Term,步骤四:配置服务端Git 这一部分主要目的是本地电脑可以通过ssh方式连接到云服务器,然后就可以通过命令行方式将博客传到云服务器上。 1、安装Git … 5 步骤五:配置Hexo并部署发布 1、安装插件 )

这个教程挺好的,基本跟着他走没什么问题

本地机器安装hexo

先在电脑上装个nodejs:

nodejs下载

然后利用这段代码在我的电脑上安装hexo

1
$ npm install hexo-cli -g

安装完利用下面这段代码判断hexo是否安装成功:

1
$ hexo -v

hexo是否成功安装

接下来,在电脑上找个位置存博客的内容,比如 D:\Code\Hexo, 然后利用以下命令初始化hexo博客:

1
$ hexo init

一般这个时候,想要启动就用:

1
$ hexo g && hexo s

但是咱这里想用点皮肤,那就整点皮肤来安装,在hexo自动生成的目录中找到themes目录,这里就是存放主题的地方。咱这里强烈推荐fluid主题:配置指南 | Hexo Fluid 用户手册 (fluid-dev.com) 利用谷歌的material design设计整出来的博客主题好看,简洁。我以前的WP主题也是类谷歌material design设计,好用!强烈推荐!

存放主题的文件夹

经过一些主题方面的设置之后,就要用到上面的WP迁移小插件,将WP的文章迁移过来。

完成迁移的文章会以md的形式存在根目录的source文件夹中。到这一步我们再用:

1
$ hexo g && hexo s

让hexo自动编译静态网页文件并启动服务端,我们就可以通过:

1
http://localhost:4000

去欣赏我们的网页了。而接下来的工作,则是将我们的网页部署到我们的服务器上

hexo博客网页

服务器配置

由于本服务器采用的是宝塔管理面板进行系统配置,所以有关nginx的安装以及网页位置的配置直接跳过

首先要做的,实在服务器上安装nodejs:

1
2
$ sudo apt update
$ sudo apt install nodejs npm

然后利用

1
2
$ node -v
$ npm -v

确认nodejs是否正常安装

接下来安装的是git,利用git sever从本地PC部署静态文件到远端服务器中:

1
$ sudo apt install git

接下来向系统中配置git用户:

1
2
3
$ sudo adduser git
## 设置密码
$ sudo nano /etc/sudoers

在此位置增加语句:

1
git ALL=(ALL) ALL

切换到git用户,然后在~目录下创建.ssh文件夹,命令如下:

1
2
3
4
$ su git
$ cd ~
$ mkdir .ssh
$ cd .ssh

创建公钥:

1
ssh-keygen

输入后都按回车即可!!!

此时在目录下就会有两个文件,分别是id_rsa和id_rsa.pub,其中id_rsa.pub就是公钥文件,复制一份:

1
$ cp id_rsa.pub authorized_keys

这样目录下就会有一个authorized_keys文件,修改它的权限:

1
2
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh

在本地电脑生成key并把key放到服务器可信任路径中的操作等其他的操作跟着教程走即可即可

利用这种方法把key放到服务器中,以后利用ssh远程连接服务器则不需要再输入密码直接登录

创建git仓库

创建一个 Git 的仓库,并且新建一个post-receive文件

1
2
3
$ cd ~
$ git init --bare blog.git
$ vi ~/blog.git/hooks/post-receive

到这一步,跟教程就有些不一样了,由于我们采用的是宝塔进行管理,所以网页存放地址与教程所给的有些出入:

网页路径

这个路径要稍作修改才可使用,直接替换成宝塔提供的网页路径即可

给post-receive加权限

1
$ chmod +x ~/blog.git/hooks/post-receive

本地配置Hexo并部署发布静态网页

先在本地的博客根目录下安装插件,然后配置下远端的仓库地址

1
2
$ npm install hexo-deployer-git --save
$ npm install hexo-server

接下来修改_config.yml 内关于部署的内容

1
2
3
4
deploy:
type: git
repo: git@云服务器公网IP:/home/git/blog.git
branch: master

接下来就开始进行远程部署:

使用 hexo clean清楚本地缓存之后,使用

1
$ hexo g -d

生成静态网页文件,并自动部署至远程服务器中

出现这样的结果就完成了部署了

这里遇到了一个问题:需要给宝塔的网页路径设置一下权限,要不然git没法自己自动更新部署的文件,修改完权限之后就正常了

完成迁移

大体上博客的主要内容已经迁移过来了,不过正如前面提到的,WP迁移到Hexo只有文章,里面的媒体文件是没办法迁移过来的。当时的我也没有使用图床而是偷懒直接使用WP自带的媒体库,导致一些文章的图片没有导过来出现缺失。因此有些文章需要后期补充图片之后再恢复了。

未完成项目:

  • live2D看板娘没有迁移过来
  • 部分文章图片未上传至图库,还未发布

2023年6月11日


Hexo转移实录
http://blask.cn/2023/06/11/Hexo转移实录/
作者
Wayne Li
发布于
2023年6月11日
许可协议