使用Github搭建Hexo的个人博客最完美的方案
前言
这是本博客的第一篇文章!特此把本博客的配置过程记录下来作为纪念也顺便测试Hexo的相关功能。
本博客由Github Page+Hexo搭建而成。优点为不用担心被ddos,可以借由git的版本管理管理文件更安全。缺点也是有的,静态页面更新极为痛苦以及性能不高,不过免费大过天,还要啥自行车。
准备工作
- 首先登录Github账号,新建两个个储存库,一个名称为
用户名.github.io
(免费账户只能设置为公开仓库),另一个名字随意用来保存hexo原始代码(可以设置成私有仓库) - 安装Git,或者安装GitHub Desktop用来同步储存库
- 安装Node.Js(推荐安装最新版本),因为Hexo是基于Node.Js的,而且之后的所有包都是通过npm安装。
- 拉取存储库
在windows资源管理器内右键可以打开git-bash
命令行工具,输入
git clone https://github.com/用户名/创建的私有仓库
安装Hexo
进入储存库,然后输入如下代码
1 | npm install -g hexo-cli |
此时Hexo就会在**Http://localhost:4000运行
安装主题
添加子模块并下载的Git指令:
1 | git.exe submodule add -b master "https://github.com/jerryc127/hexo-theme-butterfly.git" "themes/hexo-theme-butterfly" |
修改 Hexo 根目錄下的 _config.yml
,把主題改為 butterfly
1 | theme: butterfly |
打开hexo根目录下的package.json
文件并替换dependencies
项下的内容为
1 | "hexo": "^6.3.0", |
然后执行npm install
,会自动安装所有未安装的插件
以上为butterfly主题所依赖的大部分插件,如果需要其他插件则修改
package.json
即可。这样方便之后使用GitHub Action自动部署
在 hexo 的根目錄創建一個文件 _config.butterfly.yml
,並把主題目錄的 _config.yml
內容複製到 _config.butterfly.yml
去。( 注意: 複製的是主題的 _config.yml
,而不是 hexo 的_config.yml
)
部署的时候会优先使用_config.butterfly.yml
里面的配置,这样更新的时候配置就不会丢失了
可以在hexo根目录的Source
下新建一个文件夹保存图片等资源。可以在_config.butterfly.yml
中直接调用。放在主题文件夹内的所有文件都会在更新后丢失
剩余的配置步骤请跟随官方文档进行
GitHub Action 自动部署
配置SSH
- 生成ssh部署密钥,可以使用现有的密钥,也可以重新生成一个专有密钥
1 | ssh-keygen |
- 然后进入保存hexo源码的私有仓库,在
Settings -> Secrets -> Add a new secret
页面上添加ssh私钥
- 在
Name
输入框填写HEXO_DEPLOY
- 在
Value
输入框填写私钥(默认在/.ssh/id_rsa文件中)
- 进入
github.io
的共有仓库,在Settings -> Secrets -> Add a new secret
页面上添加ssh公钥
- 在
Title
输入框填写HEXO_DEPLOY
- 在
Key
输入框填写公钥(默认在/.ssh/id_rsa.pub文件中) - 勾选
Allow write access
选项
生成GitHub Token
点此处来新建一个token,选择经典Token,然后勾选repo,然后点击生成即可看到token(一定要及时保存,因为token只会显示一次,若没有保存只能重新申请)
项目文件设置
- 在 hexo私有仓库根目录下创建
.github/workflows/deploy.yml
文件,并修改git的user.email
和user.name
(大约在33行)
1 | name: Hexo Deploy |
我在部署的时候遇到了一个BUG:hexo并不会自动引用
_config.butterfly.yml
的配置。所以需要将配置复制进主题中才能正常部署在
npm install
后面添加两句指令rm themes/hexo-theme-butterfly/_config.yml
和cp _config.butterfly.yml themes/hexo-theme-butterfly/_config.yml
就可以正常部署了
- 修改根目录的
_config.yml
文件
1 | deploy: |
- 在
git bash
中输入指令提交修改。git指令可以参考廖雪峰的Git教程
上传后应该就会自动部署环境并生成静态网页然后上传到github.io
的仓库中
修改域名与开启HTTPS
虽然现在已经可以访问网站但是域名却是Github的,有域名的还是建议通过自己的域名访问,这样及时以后迁移网站也方便很多。
- 打开你的DNS管理页面,在域名创建A记录到如下几个IP
1 | 185.199.108.153 |
若想开启ipv6访问也可以创建AAAA记录,官方文档建议至少创建一个A记录,因为 IPv6 的全局采用速度缓慢。
1 | 2606:50c0:8000::153 |
IP来源于GitHub官方文档
- 然后在www子域创建CNAME规则指向
你的用户名.github.io
如果配置顶点域名(如example.com),则一定要配置www子域。
- 打开配置Hexo的公开储存库,点击
setting
然后选择Pages
。然后在Custom domain
中填入你的域名,等待DNS验证通过后就可以了。等待几分钟后就可以开启强制HTTPS了。
- 在/source目录下添加文件命令为
CNAME
,在里面添加你绑定的域名,否则,使用hexo d
上传的时候会删除github的cname设置
在线编写&发布文章
点击下方标题进入官方文档查看如何配置
Wexagonal
一个Hexo后端,可以通过cloudflare worker部署也可以在服务器和Vercel上部署
目前该项目已经一年没有更新,且官方文档内容不全
ESHexoN
一款简洁、强大的 Hexo 在线编辑器。后端部署支持 Deno 与 Cloudflare Workers 两个平台
ESHexoN 官方使用 Vue + Vuetify 构建了一个公共前端。公共前端只需要填写用户名,密码和后端地址即可直接使用
Qexo
不仅是Hexo在线编辑器,同时集成了图床,友链管理和说说等其他高级功能
可以通过Vercel或者本地部署