Hello Hexo

本文最后更新于:2021年12月14日 晚上

今年初萌生了写个人博客的想法,在看到网络上一篇篇优秀的博文之后,受到吸引,便想着自己也搭建一个属于自己博客。在了解了一些搭建博客的相关知识之后,我选择了用Hexo框架进行写作。

为什么想要搭建个人博客

正如开篇所说,想要写博客最初是受到了其他优秀博客的吸引,想要自己拥有一个个人博客,也有“这样很酷”、“学编程就应该写博客”这样的想法在。此外,我认为写博客也能够很好的帮助我,梳理学习过程中的思路,为知识做系统性的总结和归纳。很多时候,好像明白了一个知识点,但下笔记录,系统梳理的时候总是能发现很多的不足,这时候我才意识到,自己原来知识“似懂非懂”。

同样是记录学习过程,整理自己的知识体系,笔记也能够承担相应的职能,为什么非要写博客呢?对此我看到过很多的观点,有人觉得博客搭建之后更加直观,笔记查看不如博客来的方便,有人认为博客更便于分享等等。这些都是促使我选择博客的原因之一,但最重要的是,写博客带给我一种“仪式感”。我花费了时间精力,学习怎么搭建博客,排除了过程中的种种问题,最后搭建了一个博客,自然不会轻易的将它荒废掉。或许这就是,“不是轻易得到的,往往更加珍惜吧”。

确定了写博客的目标,那么在哪写博客呢?像是CSND、博客园、简书等都是很经典的博客写作平台,我在查资料的时候,经常从这些平台搜寻相关博文,它们也帮助我解答了许多学习遇到的困难。但,它们有着界面不简洁,有强制广告区等问题。这也无可厚非,毕竟是需要盈利的平台。但出于个人书写的需要,我希望除了自己的文章和笔记之外,没有广告推广之类的干扰。那么搭建一个个人博客,就是一个不错的选择。

为什么选Hexo

在看过一些网上搭建博客的教学文章和视频后,在动态博客和静态博客两大类中,我选择了后者。理由很简单,动态博客需要服务器支持,要维护数据库,虽然添加功能要比静态博客方便,但对于单纯写作来说,动态博客搭建太麻烦了,我也不是要搭建一个博客交流社区。每年维护服务器什么的也是一笔开支,目前没有富裕的条件去维持。静态博客搭建更加简单快捷,现有的静态博客框架非常多,部署简单,虽然不能像动态博客那样后台管理,但也不容易出问题,更安全。都是静态文件,要是有问题实在找不出来,直接干掉文件夹重来就好了(懒人一个)。

在许多的静态博客框架中,我选择了Hexo。Hexo用的人很多,遇到问题我可以很快的找到解答,许多问题大家都遇到过。其次,Hexo支持的插件和拓展丰富,还有相比其他静态框架,据说渲染速度还是很优秀的。hugo的速度公认最快,很多博主也说把自己的博客迁移到Hugo上了,我了解之后还是选择了用Hexo,渲染慢一点我也能接受,主要hugo偏后端一些,基于Go语言,我不会Go啊。Hexo对html标签比较友好,我了解一些,在一些小地方还能改改。虽说Hexo速度不及Hugo,但据一些Hexo重度用户说,除非写了上千篇文章,还不至于渲染慢的受不了。正好电脑上,也有Node.js的环境,就Hexo完事了。还有就是我很喜欢,Fulid这个Hexo主题,Hexo还有中文社区,查看文档也更方便。(还是要好好提高英文水平)

算了,与其纠结框架选择,不如好好写内容,别人Hexo搭建的博客也用的蛮好。

Gridea使用感受

PS:在此之前,我用过Gridea,也是一个静态博客写作工具。它简直是懒人福音,不同于Hexo需要命令行操作和git环境,Gridea几乎所有写作都可以在客户端完成,可以自定义主题。配置好仓库后,本地渲染预览之后,点击同步直接推送到GitHub(或者其他托管平台)上,简洁方便。但是,它的同步实在是太容易出错了,经常推送数次都失败,最后我还是只有手动“git push”。此外,用的人比较少(我感觉的),使用过程出现很多问题,我都找不到解答,网上很多只有搭建教程,就只说了怎么搭建。主题也比较少,我浏览了官方网站的所有主题,没有支持文章分类的主题,也可能是Gridea本身就没开发分类这个功能。这对我来说太难受了,文章查找起来很混乱。表签代替分类,也不是不行,但是标签本来就是标注文章涉及了哪些个方面,把标签当分类就不能打多个标签,而且也不能多级分类。

在使用了一段时间的Gridea之后,我决定换一个框架了。之前写的博客,保留在原来仓库,正好借换框架,新建一个博客把内容细化,之前的博客就用来记录生活和个人兴趣相关的内容。新博客针对性的写学习笔记。之前那个Gridea的Breek主题,我也蛮喜欢的,我一开始折腾了好久,把主题源码都看了一遍,改了不少自己想要的细节。可惜没有文章分类和侧边目录,一旦文章比较长,看起来就很费劲。

搭建过程踩坑记录

部署hexo博客

静态博客搭建,主要有这么几个部分:静态博客框架、托管平台、域名(可选)、第三方拓展(可选)
我选择的Hexo框架,托管平台为GitHub,使用GitHub Pages服务把我的静态资源渲染成页面。这种方式搭建博客,步骤如下:

1.Node.js 下载安装

Node.js下载地址
安装教程
Hexo框架是基于Node.js的,没有对应环境无法运行。下载安装Node.js,基本没什么问题,对着安装步骤,一路默认安装就好了,就是注意如果是Windows,不要把它装到C盘,除非你C盘真的大不在乎被软件塞。安装好之后,打开命令行输入 node -v,查看是node否安装正确(有版本号说明对了),再输入npm -v查看包管理器是否安装正确。这两个命令是Hexo运行必须的。
v14.15.3 node.js版本
6.14.9 npm版本
安装时,尽量非测试版本的最新版。

2.git 下载安装

git下载地址
git下载教程
同样安装好之后,检查版本号。命令行输入 git --version 得到版本信息
git version 2.23.0.windows.1

3.本地搭建hexo博客

Hexo中文版网址
Hexo官方文档

1)下载Hexo客户端

npm install hexo-cli -g
该命令中的 -g 参数表示全局安装,也可以选择安装到指定文件夹,在将hexo命令添加到环境变量。但明显全局安装不易出错。如果不再使用需要卸载Hexo,在命令行输入
npm uninstall hexo-cli -g
如果由于网络不畅导致安装失败,重新输入下载命令进行安装即可。实在太慢,就安装一个淘宝的镜像源,命令行输入
npm install -g cnpm --registry=https://registry.npm.taobao.org
之后下载操作把npm改成cnpm

2)检查hexo命令

命令行输入hexo -v检查版本号

3)初始化hexo

选择一个文件夹,在此处进入命令行,输入
hexo init XXX
XXX 是博客文件夹名称,该命令会创建一个名为’XXX’的文件夹,里面是Hexo博客的源文件。以后一旦出现任何问题,如果实在无法解决,直接把该文件夹干掉重来就好,不过记住之前把自己的文章备份好。

踩坑:windows下,在命令行创建文件夹mkdir XXX,进入之后,执行hexo init。或者 直接hexo init XXX。在图形界面用鼠标创建XXX文件夹,进入执行hexo init,总是初始化失败,不知道为啥。

4)渲染文件启动hexo

输入
hexo g 渲染静态网页
渲染完成后,输入
hexo s 启动hexo本地服务器
成功启动后,打开本地4000端口查看生成的博客网页

到此hexo本地搭建完成,如何生成新文章,更换主题,先不管。相关操作,参考官方文档。

4.部署hexo博客到GitHub

注册GitHub账号 —> 新建仓库(仓库必须名为:用户名.github.io)—> 初始化仓库 —>启动GitHub Pages服务
完成之后,GitHub会分配一个用户名.github.io的域名给你

这个过程简单,网上参考流程很多。

在完成GitHub Pages服务启动之后,回到博客目录下,安装hexo自动部署工具。
输入npm install hexo-deployer-git --save
安装完成后,修改博客目录下的,_config.yml 文件
打开文件,找到deploy,修改下面的字段:

1
2
3
tpye: git
repo: https://github.com/用户名/仓库名.git
branch: main

类型改为git,repo是仓库地址,branch为分支
注意冒号为英文冒号,冒号后有空格。

完成之后,回到博客目录,输入hexo cl && hexo g && hexo d
清理之前的渲染文件,重现渲染 推送到远程仓库,第一次推送会要求输入GitHub用户名和密码
推送完成成功部署到GitHub仓库,在浏览器输入用户名.github.io(之前的域名),就能看到生成的博客网页了。

踩坑
修改hexo配置文件”_config.yml” 中仓库地址,我 使用https地址总是报错
fatal: unable to access 'https://github.com/xxx/xxx.github.io/': OpenSSL SSL_read: Connection was reset, errno 10054
按照网上解决方案,改用ssh地址:
git@github.com:xxx/xxx.github.io.git
但是依旧报错,我检查之后报错信息后,发现是和我另一个git账号的ssh信息冲突了。我之前保存了另一个GitHub账号的ssh密钥在电脑上。
解决方案,删除已有的ssh密钥,重新为两个账号配置ssh密钥。
参考博文同一台电脑怎样配置并使用多个git账号
最后推送成功到GitHub上

5.hexo常用命令

hexo cl清除上次渲染的文件
hexo g 渲染页面
hexo s启动本地hexo
hexo d 推送到远程仓库

hexo new xxx 新建文章
hexo new page xxx 新建页面

优化hexo博客

1.主题更换

首先,去hexo官网的主题页面挑选一个喜欢的主题,在主题的GitHub仓库下载主题文件夹压缩包,解压之后,将主题文件夹,放到博客根目录的“themes”文件夹下。

然后,修改”_config.yml”中的”theme”字段,把主题名称更换为,刚刚下载的主题文件夹的名字。比如:
theme: fluid
之后保存文件,重新渲染页面,启动hexo,就能看到主题已经被更换了。

每个主题的自定义设置不同,具体看主题仓库的说明文件,修改对应代码,把主题改成自己想要的样子。

2.Front Matter

文章的Front Matter,指定个别文件的变量,比如发布日期,标题,更新日期,分类和标签等,具体的属性设置参考官方说明:
Front Matter

常用的一些参数:

title: xxx 文章标题
index_img: url 文章缩略图,url为图片地址
banner_img: url 文章头图,url为图片地址
date:xx/xx/xx xx:xx:xx 文章发布日期
author: xxx 作者
categories: xxx 分类/多个分类用 - 相隔
tags: xx 标签/多个标签用 - 相隔

关于分类:Hexo默认没有同级分类

1
2
3
categories:
-sport
-ball

这样,ball类会被认为是sport的子类

如果需要同级分类用英文方括号把分类名括起来

1
2
3
categories:
-[sport,ball]
-[art]

这样,sport 和 art同级,ball是sport的子类

3.添加about页面

特别注意的是,layout,该属性指定了文章的布局。默认的博客结构中是没有”about”页面的,但许多主题都会自带”about”页面,博客也通常有一个”about”页面来说明博客和作者的一些基本信息。

在博客根目录打开命令行(可以用Git Bash),输入hexo new page about 新建一个about页面
在博客根目录的source文件夹中就会出现一个about文件夹,里面有一个index.md文件,在文件的Front Matter部分添加,layout: about 以此指定布局为”about page”,如果不指定,主题会默认这是自定义页面布局”custom page”。
再在,主题文件夹的”_config.yml”中启用about页面。(每个主题配置方法有所不同)

4.自定义域名

首先从域名提供商那购买一个域名,我是从阿里云买的域名,拥有域名之后,设置域名解析。在解析类型那选择 CNAME类型,这种类型是把购买的域名解析到另一个域名,正是我们需要的,因为我们已经有了GitHub Pages提供的 XXX.github.io域名了。把域名解析到 GitHub分配的域名。

登录GitHub账号,在Pages的Custom site中填入刚刚完成解析的域名,点击save保存。
这时,仓库中多了一个“CNAME”文件,里面写的就是自定义的域名。
回到hexo博客根目录,打开source文件夹,新建一个文本文件,把自定义域名写入,保存。修改文件名为“CNAME”,注意没有后缀名,就叫CNAME。
回到博客根目录,修改_config.yml文件,在skip_render: 后面写上CNAME,注意冒号后有空格
skip_reder: 后面指定的文件,在渲染时会被跳过,这样一来,CNAME文件就不会在渲染时被修改。

5.其他

图床选择参考:
图床的千层套路 by: 陈YFの博客
ps: 我在寻找博客框架时,正好看到了该文作者的博客,使用的正是Hexo的Fluid主题,我才决定用Hexo的,看到的瞬间就喜欢上了。

Fluid主题优化参考:

Fluid主题 添加评论

Fluid 页脚增加网站运行时长

结语

博客框架看了五六个,实际上手了两个框架,配置主题,修改主题,推送GitHub,自定义域名,修改样式,配置评论插件等等,折腾了一大圈,猛然觉察自己似乎偏离了搭博客的初心。其实纠结于用什么主题、什么框架并不重要,只要它能用,够用,不会随随便便出问题就行了,最主要是坚持写博客的毅力,持之以恒去写作。无论框架多么高级,界面多么优美,失去了内容的支撑,也不过是华而不实的空壳子。

希望自己,坚持写作,用内容装点这费了些力气才搭建起的博客。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!