Blog复活
今天花了半天的时间重新又把 Blog 做了出来
写在前面
虽然已经很久没有写过 Blog 了,但是确实还是想要有一个时不时能写点东西的地方。所以把 Blog 重新捡起来的想法很早就有了,只是一直没有什么动力去做而已。今天突然有动力了就今天把事情做出来了。
旧 Blog 的处理
全部废弃
以前用的 Hexo 和各种配置都是四五年前搭出来的了,很多细节早就忘了,也不是很想处理这种半吊子的情况。所以就直接放弃以前所有的东西,重新选择新的东西,构建新的流程。
以前写的东西在本地还是会给自己留一份的,但是不会再放到新的 Blog 上了。毕竟最近的一篇都是 3 年前的事了。
为什么选择 Hugo 和 FixIt
首先还是想用静态 Blog 系统,不想再搞 WordPress 或者是 Ghost 之类的东西了,搞起来麻烦,而且后序的工作流程也跟我现在的习惯接不上。
不想搞 Hexo 是因为怕跟以前的配置出冲突,然后出现犄角旮旯的 Bug 一找找一天。虽然 Hexo 有两个挺吸引我的主题 nexmoe和 stellar
不用 Jekyll 是因为搜了一圈它的主题,感觉都没什么很好看的。
最后就是 Hugo 了。FixIt 算是一眼看对上眼了,而且这一脉的主题里它的功能算是最多的了。
理想的工作流
用 Obsidian 写作,之后把文章扔进 VSCode 里调整 Front-Matter。本地测试通过后就静态生成,然后 push 到 GitHub 上,再用 GitHub Action 把 public 文件夹通过 rsync 同步到自己的 VPS 上。
这样之后可以通过多端同步的 Obsidian 写作,使用 GitHub 当中转也可以多端本地生成。
安装与调整
安装流程没什么好说的,照着 FixIt 的教程做就行。
就是在安装 Dart Saas 的时候顺便试了一下 WingetUI,发现真的挺好使的。
FixIt 用的是 Git 子模块的方式安装的,这到后面给自己挖了一个暗坑。
配置也没什么好说的,就用 FixIt 的 toml 文件覆盖默认的,然后看着里面的配置按自己的需求改就行。
这里面有很多地方是配置网站图标的地方,本来想 AI 生成一个的,但是又懒得搞,就从 GBC 里 486 登场的那一集里截了一张图拿来用了。
本来一开始还想顺便把打赏打开,毕竟就传两张二维码的事情,但想了一下还是算了,毕竟自己也产不出特别有营养的内容。
评论系统是看了好几个,但是都嫌麻烦就索性不搞了。
几个解决的痛点
本地图片
由于懒得用图床,而且也想保证图片不炸,所以本地图片是我倾向的方案。
Hugo 里可以在每次新建文章的时候,不直接建 md 文件,而是建立一个文件夹,然后在文件内建立一个index.md
作为文档内容。这样做的好处就是,我可以直接把图片复制到这个文件夹下面就行了,也不用管路径什么的,后面生成的时候就可以带着本地的图片了。
友链
虽然最后一个友链也没配
从 FixIt 的archetypes
文件夹里把friends.md
扔到自己的content\friends\
下重命名为index.md
后,就可以通过在data/friends.yml
里添加修改数据来生成如下图的友链卡片了。
生成速度
Hugo 的生成速度确实是比 Hexo 要快的,我这边基本每次生成都在 100ms 以内。
部署
本地的 Git 初始化以后,push 到一个 private 的 GitHub 仓库。
在自己的 VPS 上配置一个专门的用户用于 GitHub Action 把数据同步过来。生成 SSH 密钥,用 GitHub Secret 的方式保存在 GitHub 里。其他的地址和端口什么的也都用这种方式保存。
具体的 GitHub Action 的写法,参考了这篇文章。这里面用的东西都比较老了,记得更新一下版本号。然后把它用 GitHub Action 生成 public 的部分去掉之后就满足我的需求了。
之后把 VPS 的 nginx 的配置改一下,本地静态生成后 push 上来以后,就可以看见新的 Blog 了。
我这里还出了一个额外的问题,因为我配置完 nginx 后的 push 的版本,是我从 GitHub 上 clone 下来测试多端生成的版本。一开始生成的时候,生成的页面不全。后面发现是自己忘了执行git submodule init
初始化 Git 子模块和git submodule update
更新获取 Git 子模块,导致本地没有主题的文件,进而生成的页面不全。
结尾
整体来讲虽然陆续碰到一下小问题,但是整个流程还是挺顺利的,基本一下午就部署出来了。
虽然 GitHub Action 在非公开的仓库上每月只有 2000 分钟的执行时间,但对我来讲完全够用了,毕竟我不可能每个月 push 2000 次吧?
希望这次能多写一些东西吧。