安装Hexo

先是要安装node.js和npm,注意node.js版本必须在14以上(在Ubuntu上吃了亏,我的node.js是apt官方源安装的,只有12,最后用nvm安装才安装了个node.js20),npm版本需要和node.js匹配,具体见https://nodejs.org/en/about/previous-releases

随后安装hexo

1
npm install -g hexo-cli

使用hexo -v查看版本

设置Github Page

创建一个Github仓库,格式必须为<用户名>.github.io

仓库创建好后,创建一个index.html文件,文件可以是任意格式的网页,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Westlord的个人随笔</title>
</head>
<body>
<h1>Westlord的个人随笔</h1>
<h1>Hello ~</h1>
</body>
</html>

随后,可以在仓库设置里的Pages页面里,在Branch处设置部署为网页的分支,按下save后稍等片刻即可部署成功。

图……没有了,可以参考GitHub Pages + Hexo搭建个人博客网站,史上最全教程这篇文章里的描述去弄。

个人使用的主题

Butterfly,安装文档:https://butterfly.js.org/posts/21cfbf15/

我是使用npm安装的:

1
2
3
4
# 通过 npm 安装并不会在 themes 里生成主题文件夹,而是在 node_modules 里生成
npm install hexo-theme-butterfly
# 如果你没有 pug 以及 stylus 的渲染器,请下载安装
npm install hexo-renderer-pug hexo-renderer-stylus --save

为什么使用npm部署

个人最后使用的是npm部署,不是因为我多懂npm,而是如果使用文件夹引入,在Github里就会面对哈人的子模块问题……个人还没学会子模块,于是放弃。

也许以后可以在本博客上出一个Git教程,重点讲讲子模块(

主题的具体配置是什么

去看主题文档的主题配置章节!这个章节不仅完善,而且对主题各个配置能展现的效果都有展示!

Github Pages部署方式

最开始是用hexo g -d部署到Github Pages,当然,首先要安装hexo-deployer-git插件

1
npm install hexo-deployer-git --save

_config.yml里加入以下的一段,其中******是你的Github Token,得在你的Github设置里获取。

1
2
3
4
5
deploy:
type: git
repo: https://******@github.com/Elegant-Westlord/elegant-westlord.github.io.git,main
branch: main
token: ******

后面我看到【Hexo自动部署】优雅的使用 Github Actions 进行 Hexo 静态博客的持续集成与部署的介绍,试着用Github Action自动化部署。

我的部署脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
name: Blog CI/CD # 脚本 workflow 名称

on:
push:
branches: [main, master] # 当监测 main,master 的 push
paths: # 监测所有 source 目录下的文件变动,所有 yml,json 后缀文件的变动。
- '*.json'
- '**.yml'
- '**/source/**'

jobs:
blog: # 任务名称
timeout-minutes: 30 # 设置 30 分钟超时
runs-on: ubuntu-latest # 指定最新 ubuntu 系统
steps:
- uses: actions/checkout@v2 # 拉取仓库代码
- uses: actions/setup-node@v2 # 设置 node.js 环境
- name: Cache node_modules # 缓存 node_modules,提高编译速度,毕竟每月只有 2000 分钟。
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Init Node.js # 安装源代码所需插件
run: |
npm install
echo "init node successful"
- name: Install Hexo-cli # 安装 Hexo
run: |
npm install -g hexo-cli --save
echo "install hexo successful"
- name: Build Blog # 编译创建静态博客文件
run: |
hexo clean
hexo g
echo "build blog successful"
- name: Deploy Blog # 设置 git 信息并推送静态博客文件
run: |
git config --global user.name "Elegant-Westlord"
git config --global user.email "elegantwestlord@gmail.com"
hexo deploy

- run: echo "Deploy Successful!"

注意,要在安装npm包时使用--save选项,保证package.json里面有所有的依赖项,因为每个Github Action都是单独开一个Docker容器运行你的命令,如果你的package.json里面没有依赖项,那么构建时就不会引入相应依赖包。

如何注册域名和给Github Page设置自定义域名

众所周知,github.io域名在中国大陆直连访问有亿点困难,于是乎,给Github Page套上自定义域名就至关重要了。

最开始使用的域名的来源是免费域名”us.kg”,虽然长得像是子域名, 其实是PSL,也就是公共后缀列表(Public Suffix List),享受主域名的一切功能与待遇。域名的注册方法我是参见了技术爬爬虾的视频:

域名套在github page上的方法如下:

首先在Cloudflare上,网站选项里找到你要使用的域名(如果按上面的视频的做法你的域名应该被Cloudflare托管着)。

添加一条DNS记录,类型选择CNAME,名称任选,目标必须是你之前设置的<用户名>.github.io的网址,关闭代理。

设置完成后就可以看到域名的记录了

随后,在Github仓库的Page设置中的Custom domain选项,填入自定义域名,待DNS检查通过后,勾选Enable HTTPS,即可实现用自定义域名访问了。

设置后,在你的网页部署仓库内会生成一个叫CNAME的文件,注意将这个文件下载下来,放在你源代码仓库的source文件夹里,避免更改博客后重新部署博客时域名丢失。

余谈

在一系列心理准备后,还是去namesilo买了一个域名,第一年一年$2.49(合RMB¥17.8),续费大概¥96(反正明年再说),现在部署在本博客和本人的其它网站上,有时间讲讲付费域名如何购买。