blog搭建(github page、hexo、next)
最近花了不少时间建立了自己的个人blog网站,整个过程也遇到了不少麻烦,所以写一篇blog记录一下我建立blog的全过程。事先说明我是在windows11系统上搭建的。
忽然发现自己不知道什么时候不小心把图片删掉了,真是汤碗了。没办法现在也找不到了,私密马赛。
hexo
推荐可以参考hexo官方文档来下载配置。对于hexo,首先需要配置nodejs(放的是windows的推荐下载链接,linux、macOS的链接在hexo官方文档里有显示)和git,这些网上都会有详细的教程而且没有什么bug,所以就不详细写了(当然不是因为博主已经忘记了自己是怎么安装的了啊),对于git的安装有一篇推荐的文档. 当然安装好git之后还不够,因为我们的网站是要托管在github上的。如果你没有github账号,请你注册一个。之后我们要把自己电脑的ssh key配置到github上,这样我们就可以把本地的仓库提交到github上了。
配置ssh key
(以下操作最好在git bash中运行,因为cmd、powershell可能无法识别你的git命令)
step1.检查主机是否已有ssh key
1 | cd ~/.ssh |
如下图所示即为已存在ssh key
如果存在,直接跳到step3
step2.生成ssh key
如果不存在ssh key,执行以下命令:
1 | ssh-keygen -t rsa -C "xxx@xxx.com" |
step3.获取ssh公钥内容(id_rsa.pub)
1 | cd ~/.ssh |
当然你直接去到C:.ssh下面用记事本之类的打开文件也可以。
如下图所示,复制内容:
step4.Github上添加公钥
进入settings 找到SSH and GPG keys,然后点击New SSH
key,把刚才的内容复制上去就好了。
step5.验证
执行以下命令: 1
ssh -T git@github.com
安装Hexo时需要注意的问题
(以下的操作推荐可以在vscode中打开hexo的文件夹,使用vscode的终端进行配置,当然你用cmd、powershell也不会有任何问题) 官方文档所给出的安装步骤已经十分详细,但要注意的是在安装Hexo之前最好先给npm换源(nodejs的安装似乎也会出现类似的情况,换源就好了),否则安装可能会出一些奇怪的问题,比如说一直转圈的杠杠。
换源执行以下命令: 1
npm config set registry https://registry.npmmirror.com
之后应该就没什么问题了。
建站
依旧还是说文档很全,当你执行完npm install
的命令后,你的网站就已经搭建好了,之后的工作就是去美化你的网站。当然你可以先看一下hexo给大家提供的默认网站的样子。
执行以下操作: 1
2hexo clean
hexo shttp://localhost:4000/
你就可以看到当前的网站了,因为我没有保存网站的图片所以就不放了。
配置
打开根目录(也就是你hexo下载的那个文件夹),找到_config.yml文件
1 | # Hexo Configuration |
其中title
就是blog的名称,subtitle
则是对blog的简短介绍,description
可以写自己的座右铭,key words
有点类似QQ的标签,author
就是你的昵称,language
选择zh-CN
,timezone
选择'Asia/Shanghai'
,url
就写自己的xxx.github.io
.
github
接下来就是该如何把自己的blog托管在github
page上面。你当然可以先hexo clean&&hexo g
,把生成的public
文件夹自己手动push到github上。显然这比较麻烦。幸运的是hexo提供了自动化的工具,你只需要输入hexo d
就可以自动帮你把public
文件夹上传到github上。
首先我们需要安装这个工具。 安装插件hexo-deployer-git
1
npm install hexo-deployer-git --save
deploy
字段,更改如下:
1
2
3
4
5
6# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@github.com:YHFrozen/yhfrozen.github.io.git \\放ssh地址,不要http
branch: main1
hexo clean && hexo d -g # or hexo g -d
hexo常见指令与知识
新建文档
1 | hexo new #postname |
无需后缀名,hexo会自动在source/_posts下生成相应的.md
文档。
例如: 1
hexo new "welcome to my blog" //如果有空格或特殊字符需要加上双引号
新建页面
hexo
支持建立一些页面,同时也支持对文章进行分类和标签,分类和标签信息都存储在front-matter
中。
分类和标签
hexo提供了tags
和categories
两种页面(当然远不止这两种),它们都是如下的结构:
1
2
3
4
5
6
7
8categories: #分类
- category1
- category2
#...
tags: #标签
- tag1
- tag2
#...categories
指的是category1下的category2,是严格的父子关系;而tags
指的是既是tag1又是tag2,是并列关系。
你可以通过如下指令来建立页面: 1
hexo new page categories&&hexo new page tags
tags
为例,打开文件夹后会有一个index.md
文档,title
可以改成你想要的名称,然后在front-matter
中添加type: "tags"
,正文留空,就完成了创建。
关于
同样你可以制作about
页面,在前面的基础上在index.md
中添加正文部分即可。
常用指令
1 | hexo generater |
生成静态文件,可以简写为hexo g
,这是更新网站的关键步骤之一。
1 | hexo deploy |
部署到github上,可以简写为hexo d
,一般和hexo g
连用,写成hexo d -g
orhexo g -d
.
1 | hexo server |
启动本地服务器,默认网址是http://localhost:4000/
,可以简写为hexo s
,你可以把它理解为预览。
1 | hexo clean |
清除缓存文件(db.json
)和已生成的静态文件
(public
)。一般在hexo d -g
之前都要执行这个命令(hexo s
不需要)。
1 | hexo new draft #postname |
有的时候你要更新一些文章,但其中一部分还没有做完,所以你就最好在写文章前就把它设置成draft
,也就是草稿。它的原理是新文章将建立在
source/_drafts
目录下,因此 hexo generate
并不会将其编译到 public
目录下,所以
hexo deploy
也不会将其部署到 GitHub。 1
hexo S --draft
Next
next的安装推荐参考官方文档,这里就不说了,因为我没有遇到什么bug。
配置
首先打开_config.yml
,找到theme
字段,把landscape
改成next
。
之后就是关于_config.next.yml
的配置,推荐参考shwstone大佬的blog。
当然由于next的更新迭代,有一些blog的功能在新版下已经变成了其他样子,这个就靠大家自己在网上找找了。
评论系统
我这里只单独说一下评论系统,我用的是gitalk,基于github page搭建的,其余的比如说twikoo之类最近比较火的评论系统大多是基于verel部署的,和github page不太搭。 gitalk的推荐下载
style
有的时候你会发现next给出的一些模块的颜色、字体之类的你不太满意,这个时候你就需要自己去微调。在_config.next.yml
下找到custom_file_path
字段,将style: source/_data/styles.styl
取消注释并建立相应的styles.styl
文件。在这个文件里面你需要运用css去编写。例如设置背景:
1
2
3
4
5
6
7body {
background:url(/images/background.jpg);// 设定背景图片,images同处于source文件夹下
background-repeat: no-repeat;// 设定背景图片非重复填充
background-attachment:fixed;// 设置背景图片不随页面滚动
background-position:50% 50%;// 设置背景图片位置
background-size: cover// 设置保持图像的纵横比并将图像缩放成将完全覆盖背景定位区域的最小大小
}.header
的颜色的设置的时候就要和下面一样:
1
2
3
4
5
6
7// 页面头样式属性
.header {
// 也可以同时定义背景色
background-color: #800080 none repeat scroll !important;
// 透明度
opacity: 0.85;
}none repeat scroll !important
具体的原因是因为不同选择器的优先级不同,!important
会设置成强制优先。
域名购买与设置
对于某些人来说,就比如我,会觉得.github.io
不符合胃口,就是想要拥有一个自己的域名。这里记录一下我的购买流程。首先我是在阿里云上购买的,先登录,然后才可以查询域名,进入购买页面。
之后要创建自己的信息模板,需要邮箱、身份证信息。
购买注册之后进行DNS解析(在控制台界面中),点击云解析DNS,
点击进入权威域名解析,在操作中选择解析设置,选择第三条(旁边会有提示,A、AAAA、CNAME,选择CNAME),不要选IPv4和IPv6,然后选择www.和@,在记录值中填写你现在的github.io网址。
打开github中的blog仓库,进入Settings选项,点击进入page页面,在最下面的Custom
domin中填写你解析好的域名,比如我的就是yhfrozen.fyi
,勾选Enforce
https项,一分钟左右(可能更少)github会提示你注册成功,这个时候你就真正拥有自己的网站了。
但要注意的是此时你的网站依然托管在github上,也就是说你依旧需要魔法才能登上。如果你想把它搬到内网,你就需要更换国内的服务器,这需要向当地政府做ICP备案.