Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他标记语言)解析文章,利用主题生成静态网页。

预设参数

名称
电脑系统 Windows 11 x64
博客目录 blog
GitHub 账号 username
博客域名 www.biji.work
图床域名 oss.biji.work

1.安装

Git

1
2
$ git -v
git version 2.45.1.windows.1

Node.js

1
2
3
4
5
$ node -v
v20.14.0

$ npm -v
10.7.0

切换淘宝镜像

1
$ npm config set registry https://registry.npmmirror.com

Hexo

1
2
3
4
$ npm install hexo-cli -g
$ hexo init blog
$ cd blog/
$ npm install

本地访问

1
$ hexo server

简写

1
$ hexo s

http://localhost:4000

2.部署

创建仓库

创建 GitHub 账号同名仓库 username.github.io,设置 public 权限

仓库分支

默认分支:master,存放生成的网站静态代码

源码分支:source,存放文章源码 markdown 文件,主题文件等

添加 SSH key

生成 SSH key

1
$ ssh-keygen -t rsa -C "username@email.com"

查看 SSH key 并添加到 GitHub

1
$ cat ~/.ssh/id_rsa.pub

测试成功

1
2
3
4
5
6
7
$ ssh -T git@github.com
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvJJhivbpZV6TusF/vHdkr4UvCOqUzLDA0zPMS.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi username! You've successfully authenticated, but GitHub does not provide shell access.

设置账号

1
2
$ git config --global user.name "username"
$ git config --global user.email "username@email.com"

查看账号

1
2
3
4
$ git config user.name
username
$ git config user.email
username@email.com

配置

修改 _config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Site
title: 网站标题
subtitle: 网站副标题
description: 网站描述
keywords: 网站的关键词,支持多个关键词
author: username
language: zh-CN
timezone: Asia/Shanghai

# URL
url: https://www.biji.work

# Deployment
deploy:
type: git
repo: git@github.com:username/username.github.io.git
branch: master

发布

安装发布组件 hexo-deployer-git

1
$ npm install hexo-deployer-git --save

推送

1
2
3
$ hexo clean
$ hexo generate
$ hexo deploy

简写

1
2
3
$ hexo cl
$ hexo g
$ hexo d

连写

1
$ hexo cl && hexo g && hexo d

账号域名访问

https://username.github.io

3.域名

购买域名

  1. 阿里云/万网
  2. 新网
  3. 腾讯云
  4. 百度云
  5. 京东云
  6. 华为云
  7. 西部数码
  8. UCloud
  9. 硅云
  10. 聚名
  11. 亚马逊 AWS
  12. GoDaddy

解析

记录类型 主机记录 记录值
CNAME www username.github.io

CNAME

source 下 新建 CNAME 文件,内容为域名:www.biji.work

1
2
$ cat CNAME
www.biji.work

重新发布

1
$ hexo cl && hexo g && hexo d

域名访问

www.biji.work

4.主题

官方主题列表,推荐主题:NexTMateryMaupassantHueman,我使用的主题:Butterfly(支持:百度统计、不蒜子计数、各种评论系统)

下载

1
2
$ cd themes/
$ git clone https://github.com/jerryc127/hexo-theme-butterfly.git butterfly

安装依赖

1
2
$ cd themes/butterfly/
$ npm install hexo-renderer-pug hexo-renderer-stylus --save

使用

复制主题的配置文件 _config.yml 到根目录,并重命名 _config.butterfly.yml

1
$ cp themes/butterfly/_config.yml _config.butterfly.yml

切换主题,修改 _config.yml

1
2
# Extensions
theme: butterfly

5.SEO

添加网站

注册百度站长,并添加网站

网站验证方式:文件验证、HTML 标签验证,推荐使用文件验证

复制网站 token

自动提交链接

安装网站地图组件

1
2
$ npm install hexo-generator-sitemap --save     
$ npm install hexo-generator-baidu-sitemap --save

hexo g 命令自动生成 sitemap 文件

1
2
3
4
5
6
7
8
9
$ hexo g
INFO Generated: sitemap.xml
INFO Generated: sitemap.txt
INFO Generated: baidusitemap.xml

$ ll public/ |grep site*
-rw-r--r-- 1 username 197121 218 Jun 17 16:10 baidusitemap.xml
-rw-r--r-- 1 username 197121 115 Jun 17 16:10 sitemap.txt
-rw-r--r-- 1 username 197121 657 Jun 17 16:10 sitemap.xml

安装百度推送组件

1
$ npm install hexo-baidu-url-submit --save

配置百度推送,修改 _config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# URL
url: https://www.biji.work

# Deployment
deploy:
- type: git
repo: git@github.com:username/username.github.io.git
branch: master
- type: baidu_url_submitter

baidu_url_submit:
count: 1
host: www.biji.work
token: <token>
path: sitemap.txt

推送百度

1
2
3
4
$ hexo d
INFO Deploying: baidu_url_submitter
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: ENOENT: no such file or directory, open '\username.github.io\public\baidu_urls.txt'

错误原因:public 下找不到 baidu_urls.txt

错误分析:

  1. public 下自动生成了文件:sitemap.txt
  2. baidu_url_submit 默认文件是 baidu_urls.txt
  3. baidu_url_submit 指定文件名 sitemap.txt,组件仍然在读取 baidu_urls.txt,所以报错

错误修复:

修改文件 /node_modules/hexo-baidu-url-submit/lib/submitter.js

1
2
// var baiduUrlsFile = pathFn.join(publicDir, 'baidu_urls.txt');
var baiduUrlsFile = pathFn.join(publicDir, urlsPath);

重新推送

1
2
3
4
5
6
7
$ hexo d
INFO Deploying: baidu_url_submitter
INFO Submitting urls
INFO baiduUrlsFile
\username.github.io\public\sitemap.txt
{"remain":7,"success":3}
INFO Deploy done: baidu_url_submitter

注意:百度主动推送每天限额 10,超过后会提示限额

1
{"error":400,"message":"over quota"}

6.百度统计

注册

注册百度统计,新增网站,获取百度统计 id

配置

修改主题配置 _config.butterfly.yml

1
2
# Baidu Analytics
baidu_analytics: <id>

7.评论系统

注册

来比力官网

安装免费版

找到系统分配的 uid

配置

修改主题配置 _config.butterfly.yml

1
2
3
4
5
6
7
8
# Comments System
# --------------------------------------
comments:
use: Livere
# livere (來必力)
# https://www.livere.com/
livere:
uid: <uid>

8.图床

新建仓库

创建仓库 oss,设置 private 权限

结构如下

1
2
3
├── index.html
├── hexo
└── index.html

内容如下

1
2
3
4
5
$ cat index.html
oss.biji.work

$ cat hexo/index.html
oss.biji.work/hexo

生成 token

牢记授权码, 只显示一次,关闭页面就不再显示, 只能重新生成

PicGo

下载最新版 PicGo,精简图床列表

配置 GitHub 图床

上传图片

访问图片

https://oss.biji.work/hexo/xx.png

Typora

下载 Typora中文站),配置:文件 / 偏好设置 / 图像

验证图片上传选项,自动上传测试图片 typora-icon.pngtypora-icon2.png

部署

进入 Vercel 使用 GitHub 注册账号,导入项目 oss

导入后系统会自动部署,可以通过系统分配的项目域名 xx.vercel.app 访问,由于技术原因,导致不能正常访问,需要自定义域名

域名

添加域名 oss.biji.work

添加成功

配置 DNS

在域名服务商新增 CNAME 解析(具体以提示信息为准)

Type Name Value
CNAME oss cname.vercel-dns.com

配置好后,自动刷新域名状态

测试结果

https://oss.biji.work

#参考文献

Hexo

Butterfly

来必力

百度统计

百度站长

PicGo

Typora

Vercel

GitHub