迁移博客的碎碎念

本文主要是一些把博客迁移到hexo过程中发生的各种技术问题。

前言

由于之前的博客太丑了,阅读体验极差,响应式布局像个傻逼一样(电脑横屏的文章布局和手机一样,字贼大,将浏览器窗口侧边收紧后阅读体验反而变好),我决定迁移博客。

迁移准备

博客全部在github上,所以只要找到一个博客系统,能够兼容之前的markdown就行了。如果没有兼容,至少改动不需要太多。由于在github page上,那么存在以下几个备选方案:

  • Hugo:拿GO写的静态站点生成器
  • Hexo:基于Node.js的博客框架
  • jekyll:基于ruby的静态博客网站生成器

以上就是几个备选方案,或许存在我不知道的备选方案(比如自己写?),所以我没有考虑。

Why hexo?

没什么原因,因为hugo没听说过,jekyll忘了怎么拼写(虽然之前用的就是jekyll,但我还是懒得部署本地ruby环境)。

选择完hexo之后,就可以看看博客主题,毕竟我不会前端,还是拿别人写好的比较好。

Hexo官网主题提供了许多可供选择的主题,可以直接点进仓库看,可以自己部署,但我更喜欢直接fork别人仓库后改文章代码,网页配置之类的东西,毕竟简单(懒)。

我用的是icarus,仓库地址在这里,注意这个地址是site分支,也就是实际网站源码的分支。下载完源码之后记得git切分支。

环境准备

Node.jsHexo的安装就不多说了,官网很详细。同时在clone完上面仓库,切换到site分支后,进到对应文件夹,执行以下命令安装依赖。

1
npm install

他会根据package.json文件去安装依赖。虽然有些依赖可能已经过时,但能用就行。这个过程可能很长,记得换源。(我自己都没换)

安装完成后,执行以下命令启动服务器:

1
hexo server

也可以简写为hexo s,这时候访问localhost:4000就应该可以访问到页面了。

小插曲

安装完hexo后,电脑的ms-setting没有了。这个的直接后果是个性化显示设置这些右键的设置选项打不开,会报错说找不到。电脑的开始界面点不开,搜索界面搜索到的软件全部打不开,但是桌面都很正常,应用软件也都打得开。

最初我怀疑是path被搞丢了的问题,但是其实不是,但还是记录以下,这里是path搞丢了的解决方案:

  • Win+R进入到运行,输入regedit,进入到注册表编辑器
  • 进入到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment,找到path,复制。
  • 右键点击我的电脑,属性高级系统设置环境变量,去里面找到path,进行比对。不同就恢复以下。

这可能是一个path丢失的解决方案,但并没有解决我的问题。于是随便搜了一下。我执行了以下步骤,但具体哪一个步骤真正解决了问题,我也不知道

  • Win+X,可以用管理员模式点开powershell,这个应该不依赖ms-setting
  • 执行sfc /scannow,扫描并修复损坏或丢失系统文件。
  • 执行shutdown -r重启。

虽然最后解决了问题,但再次说一下,我也不知道以上哪个步骤真正解决了问题,仅供参考。

部署和配置

回到主题,完成运行之后,我们需要更改配置,来供自己使用。更改配置在_config.yml里面,具体选项有着具体的文档解释,反正可以运行看效果,所以可以随便试试。本博客采用的主题除了这一个yaml文件外,还有=_config.post.tml_config.icarus.yml文件,这些主要看文档怎么写和自己多试试。

插曲2

在本地运行调试之后,我发现个严重的问题,本地访问需要20s。这个问题挺好排查的,因为本地不可能这么慢。点开F12看调试框,可以看到有个叫fontawsome的css文件需要联网获得,并且failed。这样就存在了访问慢的问题。

解决方法是在配置文件中改CDN,具体参考yaml文档的解释。

部署

在yaml中设置type: gitrepo: 远程git仓库branch: 分支就行,记得设置到master分支才有效。

由于我们安装了别人的依赖,所以不需要再安装deploy。在设置完成后,执行以下:

1
hexo deploy

等待即可。不出以外的话应该会成功。出意外的话github会给你发邮件。

配置

这里简单介绍一些配置。

toc可以开启目录。需要提前配置。

categories设置分类。tags设置文章tag。

mathjax我自己的使用方法是在文章前面head里面加cdn来设置的。也有模板提供的解决方法,具体查模板文档就行。

题外话 algolia

algolia是个前端搜索插件,好用是好用,但部署过程有些复杂,导致我收了不知道多少个github邮件说失败。这里简单介绍一下。

实际解决方案

先说实际解决方案——用别人的api key。自己申请的key由于硬编码到——config.yml中,因此会被爬虫爬到(三分钟就被警告了),并且会被发邮件警告。所以用别人的key是最好的。

就我自己的话,是用的别人的api key,抄的别人的github action来用的,好处是省心,坏处是有些缺德。

理论解决方案

首先注册algolia账号。它的官网访问速度很迷,所以慢慢等。注册之后需要填公司,瞎填就行。

新建一个index,自己命名一下,然后在左边找到api key栏目,新建一个带各种权限的api key。

在yaml中设置各种选项,如下:

1
2
3
4
5
6
algolia:
applicationID: 'your applicationID'
apiKey: 'your apiKey'
adminApiKey: 'your adminApiKey'
indexName: 'your indexName'
chunkSize: 5000

这里api key就是刚才申请的,其他的照抄即可。

除此之外,还要设置环境变量,如下所示:

1
export HEXO_ALGOLIA_INDEXING_KEY=apiKey

不是很懂它的两次apiKey,由于我们硬编码到yaml中了,所以必定会被爬虫爬到。所以还是用别人的。

在完成环境变量后,安装hexo-algolia插件,如下:

1
npm install hexo-algolia --save

然后运行即可。

注意:我没试过理论方法,毕竟被github发了一万个邮件,所以不保证正确性。觉得懒的可以直接抄github action就行。

总结和其他

整个过程花了我两天还是一天,总之比预想要快,因为blog的一些标签都是兼容的,这就很好办,没有过多的迁移成本。

但也存在一些问题,比如我之前的blog的格式就存在很多问题,显示上不好看,但无伤大雅。一些硬编码的链接也出现了问题,比如目录错误之类的,有时间慢慢解决吧。(也就是不解决了)

同时还有个不知道是bug还是feature的东西,在渲染markdown table的时候渲染失败,两个减号会被渲染成unicode 2013字符。暂时解决方法是通过typora的开发者界面复制html代码,然后在raw标签中直接粘贴进去。虽然不优雅,但可行。

换了博客主题写作心情也会变好。

Author

王钦砚

Posted on

2021-01-28

Licensed under

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×