Hexo博客搭建食用指北
19 年参考这个搭了自己的 blog,现在当年的版本太低,于是乎自己研究了下,重构了一遍。
域名
域名的申请
提示:freenom 近期因技术原因暂时关闭了域名注册服务。以下内容可能短时间内不可用。
土豪请略过,我这里谈的是免费的
首先打开freenom
网站打开慢可以挂个代理。事实上不管挂不挂好像都挺慢的,尤其是选好域名进入结算的时候
搜索你想要的域名
选择你想要的
结算
进入结算页面
先点1,把3 Months @FREE
改成12 Months @FREE
不然你的域名有效期只有3个月
然后点你要保留的域名中的2(Use DNS)
点3(Use your own DNS)
选择你的DNS服务商:
建议:
Hexo blog
注:这里只介绍 next 主题。
本文的配置基于 Hexo 7.0 和 Next 8.17.1 实现。
Hexo 配置
这部分的配置需要修改根目录下的 _config.yml
。
好像只有一点东西可以设啊
标题
1 | title: yltx's blog |
作者
1 | author: 引领天下 |
语言
应该在第11行的位置
1 | language: zh-CN |
这样页面语言就是中文了。
主题
1 | theme: next |
Next 配置
开始配置前,我们需要先安装 Next 主题。
建议通过 npm
方式安装,这样后续升级比较方便。
1 | npm i hexo-theme-next@latest |
安装完成后,为了避免以后更新主题时配置文件被覆盖,我们需要拷贝一份到根目录下配置:
1 | cp node_modules/hexo-theme-next/_config.yml _config.next.yml |
后续的配置都通过修改 _config.next.yml
实现。
选择 4 种主题中的一种
1 | # Schemes |
把想要的那一种前面的#
去掉,不想要的加上即可。
改变网站图标
注意这里写的路径是相对根目录下的 source
的。
为了方便后续更新,我直接在 source
下新建了一个 favicons
文件夹,用来存相关图标。
于是我的配置是这样的:
1 | favicon: |
注:大小要符合。比如 16x16
就是长宽都为 16px
的图片。
页脚设置
1 | footer: |
顶部菜单栏
1 | menu: |
将需要的项目取消注释即可在侧边栏显示。
如果需要使用“关于”页面,输入命令 hexo new page "about"
。
然后在 \source\about\index.md
中就可以编辑“关于”页面了。
可以修改 \source\about\index.md
中的 title
项来显示“关于”
而非“about”
。
如果需要使用“标签”
功能,需要在博文中添加选项 tags
。
如果有多个标签,每行一个,以 - 开头:
1 | tags: |
如果需要使用“标签”
页面,输入命令 hexo new page "tags"
。
然后向 source\tags\index.md
中添加一行:
1 | type: "tags" |
tip:所有这里使用的图标都来自图标库v5。想要什么图标可以自己搜索。
站内搜索
输入命令 npm install hexo-generator-searchdb --save
安装所需的库。
在根目录下的 _config.yml
的结尾加入:
1 | search: |
然后在 \themes\next\_config.yml
中,打开 local_search
:
1 | local_search: |
社♂交
1 | social: |
在 social
下每行一个,格式为:名称: 地址 || 图标
。
其中,“图标”与上文标题栏图标来源相同。
1 | social_icons: |
这样设置可以只显示名称不显示图标。
友情链接(或其它链接)
1 | # Blog rolls |
icon
:显示在标题前的图标。
title
:标题。
layout
:block
一行一个,inline
一行多个。
links
:要显示的链接以及名称。
格式为 名称: 链接
。
头像
1 | # Sidebar Avatar |
url
:头像地址,留空则不显示头像。
rounded
:圆/方头像。
rotated
:随光标旋转。
回到顶部按钮+阅读百分比
1 | back2top: |
阅读进度
1 | # Reading progress bar |
博客首页不显示全文
在博文里可以用 <!-- more -->
来标识在首页显示到哪为止。
可以在文章中使用 description
来指定显示在首页的内容。
例如:
1 | --- |
代码块
1 | codeblock: |
$\LaTeX$
1 | math: |
评论功能
gitalk:
1 | # Gitalk |
这里需要在 GitHub 新建一个 OAuth App,“Homepage URL”和“Authorization callback URL”填你的域名(如果没有申请域名的话就填 yourname.github.io
):
需要注意的是,地址要严格和博客访问地址一样,http
和 https
不能混,有无 www
也不能混。
然后将 Client ID
和 Client Secret
填入上方的 *
中。
Waline
我使用的是 Waline 评论系统。
具体做法是,在 _config.next.yml
的末尾添加以下内容:
1 | # Waline |
详细的配置方式可以参考官方文档。相当详细。
访客记录
1 | # Show Views / Visitors of the website / page with busuanzi. |
书签
书签的功能是关闭页面/手动点击书签按钮时,保存这篇博客看到的位置,下次点进这篇博客时继续从这个位置开始。
安装插件:
1 | git clone https://github.com/theme-next/theme-next-bookmark.git source/lib/bookmark |
更改 _config.next.yml
:
1 | # Bookmark Support |
convas-nest 背景
回到根目录,在 source/_data
下创建文件 footer.njk
,填入以下内容:
1 | {% raw %} |
然后修改 _config.next.yml
中的 custom_file_path
:
1 | footer: source/_data/footer.njk |
RGB选项可以自己配置线条颜色。
follow me
1 | # Subscribe through Telegram Channel, Twitter, etc. |
想必已经足够清楚了。
侧边栏
1 | sidebar: |
标签图标
1 | # Use icon instead of the symbol # to indicate the tag at the bottom of the post |
Follow me on Github
1 | # `Follow me on GitHub` banner in the top-right corner. |
这是能让你在博客中直接显示 PDF 文件的插件。
首先回到根目录,下载插件:
1 | git clone https://github.com/next-theme/theme-next-pdf source/lib/pdf |
然后修改 _config.next.yml
:
1 | # PDF tag |
pjax
1 | # Easily enable fast Ajax navigation on your website. |
FancyBox
1 | # FancyBox is a tool that offers a nice and elegant way to add zooming functionality for images. |
顶部进度条
1 | # Progress bar in the top during page loading. |
其他配置
博客背景
在 \source\_data\styles.styl
中输入:
1 | body { |
其中 URL
是你想作为背景的图片的地址。可以是网址,可以是本地地址。
background-size
: cover
; 表示宽度缩放至页面大小。
1 | body { |
如果修改成这样的话背景图片就不会滚动。
如果不想让博客内容挡住背景,可以设置博客内容的透明度,在 \themes\next\source\css\_custom\custom.styl
中加入下面的代码即可:
1 | .main-inner { |
README.md
如果想在 https://github.com/yourname/yourname.github.io
让别人看到你的博客的简介,就需要写一个 README.md
放在根目录下的 source
文件夹内。
然而,只是这样的话, README.md
会被渲染成 html
,所以需要更改根目录下 _config.yml
的设置:
1 | skip_render: README.md |
自定义404页面
首先写一个 \source\404.html
。
至于怎么写html……关于这个问题,我想到了一种美妙的解法,可惜这里地方太小写不下作者最近打算抽空写个专门介绍404.html
的博文呢……
事实上可以新建一篇博客,用 Markdown
写一个 404
页面,然后 hexo g
在 \public
里找到博客的页面,把相关部分直接复制过来。
可以参考一下我的:
1 | <body background="https://raw.githubusercontent.com/yltx/yltx.github.io/master/images/background.jpg" font-family: "楷体"> |
发布效果:https://yltx.cf/404
然后,如果直接这样发布,html
会被渲染,就跟一个自定义页面(hexo new page
)一样了。
所以要修改根目录下的 _config.yml
,在 skip_render:
后添加 404.html
,如果有多项用 -
隔开:
1 | skip_render: |
发布完成后,访问一个错误的网址,比如 你的域名/qaq
就可以查看效果了。
折叠效果
效果见下面附录部分
博文自定义排序
打开 \node_modules\hexo-generator-index\lib\generator.js
。
用以下内容覆盖原内容↓
1 | var pagination = require('hexo-pagination'); |
之后在博文设置中加入 top: x
即可,会以 top
为第一关键字,时间为第二关键字排序。若 top
为空则视作 -INF 。
连接github
配置github仓库
首先你要有一个github账号……
然后登录
新建一个repo:
输入名字,保存:
注意:yourname要换成你的githubID。
比方说我的就是yltx.github.io
然后点2就可以了。
上传
在本地输入:
1 | ssh-keygen |
让你输东西就空着,按回车就行(应该要三次吧)
输入命令:
1 | cat ~/.ssh/id_rsa.pub |
复制窗口中出现的一堆乱码一样的东西
然后回到github,点头像打开Settings
点击左侧的SSH and GPG keys
我的已经有一个了不用管
点New SSH Keys
,新建一个,标题随便,把刚才复制的一堆东西粘贴进去,然后点”Add SSH key”就行了。
然后在本地输入命令
1 | ssh -T [email protected] |
若出现Hi yourname! You've successfully authenticated, but GitHub does not provide shell access
就表示SSH配置成功了
输入命令
1 | npm install hexo-deployer-git --save |
就可以安装deployer。
打开根目录(在本地创建的那个文件夹)下的_config.yml
,在最后输入:
1 | deploy: |
当然yourname要改成你的Github ID了。
输入命令:
1 | hexo cl |
这一步可能要输入密码(出现一个弹框)
以后可以用简化的命令:
1 | hexo cl |
等几分钟,打开yourname.github.io应该就可以看到你的博客了。
那么恭喜你,你上传好了。
连接域名和github
先在hexo根目录的source
子目录下新建文件CNAME
(重要!没有.txt之类的后缀名!)
然后打开,输入你的域名(注意,如果使用gitalk,在此处输入的域名必须与App中的一样)
例:
CNAME:
1 | yltx.cf |
App:
1 | https://yltx.cf |
千万不能随便加www
!要加要一起加!
dnspod
在本地打开cmd(命令提示符),输入命令:
1 | ping yourname.github.io |
yourname要换成你自己的githubID。
会出来一个IP地址:
我红笔圈出来的部分
然后打开dnspod中你之前添加的域名
把这个IP填到之前dnspod我们瞎填111.111.111.111
的地方,保存
Cloudflare
打开Cloudflare官网
有的登录,没的注册
登录好了之后:
点右上角的Add Site,输入你的域名
添加好之后
接下来肯定是点Next啦
咳咳咳选哪个套餐就看你有多少钱啦
我选的是FREE
点Confirm Plan
再点一次Confirm
不要问我为什么换了域名,因为Cloudflare要求要存在的域名,而我并没有真的申请kkksc03.ml
然后点continue应该就可以了
在本地输入命令:
1 | hexo d |
过几分钟域名应该就可以用了。
开启https
如果不开启的话,访问 https://你的域名
就会显示警告,访问 http://你的域名
就会显示不安全。
当然如果因为某种原因访问 https://你的域名
已经不会显示警告而且浏览器左上角有绿锁了,就不需要再进行额外的设置了。
其实很简单,浏览器打开https://github.com/yourname/yourname.github.io/settings
,找到这里:
(我已经开过了)
勾选Enforce HTTPS
即可。
停用域名
单纯停用只需删去 CNAME 文件即可,然后记得更改相关设置(在各种地方引用的博客链接、OAuth App 地址……)。
Q&A
Q1
Q:“Enforce HTTPS”前面是灰色的,无法打勾
A:
删掉“Save”前面的域名,点击“Save”。
重新输入域名,点击“Save”。
重新发布博客(hexo d)。
等待几分钟~几小时,再访问你的博客应该就OK了。
Q2
Q:gitalk用不了
A:检查App和CNAME域名是否相同(上文说过)
特殊的:如果开启了https则URL一定要填https。
Q3
Q:停用域名不成功,即:在电脑上访问博客还是自动跳转到原有域名
A:
按F12
点Network
勾选Disable Cache
按Ctrl+F5强制刷新
取消勾选
Q4
Q:代码块出锅,没有高亮,还没办法复制
A:检查根目录下的_config.yml,将highlight
一段改成下面即可:
附录
常用命令
1 | hexo cl |
删除编译文件夹public,方便重新编译
1 | hexo g |
编译。
1 | hexo d |
上传。
1 | hexo g -d |
编译后上传。
1 | hexo new page "xxx" |
新建一个以“xxx”为名的页面,md文件直接存放在\source
文件夹下。
1 | hexo n "xxx" |
新建一篇以“xxx”为名的博文,md文件存放在\source\_posts
文件夹下。