静态博客搭建
博客搭建
环境准备
Git 安装
- 下载网址 Git
- 打开命令提示符(CMD)验证安装版本:
1 | git --version |
Node.js 安装
- 下载网址 Node.js — Node.js 版本 ,找到需要下载的对应版本
- 打开命令提示符(CMD)验证安装版本:
1 | node -v |
- 给标准包管理器 npm 换源:
1 | npm config set registry https://registry.npmmirror.com |
Hexo 安装
打开安装好的 Git-Bash 运行,(Git-Bash 中用右键鼠标进行复制粘贴 )
1 | npm install -g hexo-cli |
安装结束后,运行
1 | hexo -v |
验证安装是否成功
GitHub 部署
打开 Git-Bash,运行
1 | git config --global user.name <你的用户名> |
运行 git config -l 检查是否配置成功
接着运行
1 | ssh-keygen -t rsa -C <你的邮箱> |
一直按 Enter 键就可以了
密钥的默认位置在 C:\Users\用户名 文件夹下,需显示隐藏的项目,找到 .ssh 文件夹,里面有两个 id_rsa 文件,一个是公钥,一个是私钥
密钥用于此电脑连接至 GitHub
注:如果之前搭梯子生成过密钥,即 .ssh 文件夹,里面已经有两个 id_rsa 文件了,就不用再生成了
密钥生成之后,用 VSCode 或记事本打开公钥文件,全选复制里面的内容
登录 GitHub
然后点右上角头像 > Settings > SSH and GPG keys > New SSH key
Title 随便起名,Key Type 默认,Key 的内容为公钥文件里的内容,之后点 Add SSH key
运行以下代码测试连接
1 | ssh -T git@github.com |
由于第一次连接,需要输入 yes 确认连接
新建 Hexo 项目
新建并进入一个新文件夹,右键鼠标Open Git Bash here,运行
1 | hexo init <folder> |
Hexo 项目文件夹结构如下
1 | Wenqi_Blog/ |
详细说明:
-
_config.yml
存放全局配置,例如站点信息、URL规则、分页设置等,是 Hexo 的核心配置文件
-
package.json
用于管理项目的依赖项和脚本命令,方便扩展和自动化构建
-
scaffolds/
内涵默认的文章和页面模板,可以根据需要修改或新增自定义模板
-
source/
所有博客内容的存放地,按照用途划分为草稿(drafts)和正式文章(posts)文件夹,也可以在该文件夹中创建图片、附件等资源文件夹
-
themes/
存放博客主题,每个主题包含独立的布局、样式及部分配置文件
安装主题后需在
_config.yml中指定启用的主题名称 -
public/
每次生成静态站点文件时输出到此目录下,实际部署的即为该文件夹内容
若需预览效果,在
Wenqi_Blog文件夹中,右击鼠标打开 GitBash 运行hexo s查看生成后的页面
然后安装一些优化插件
1 | # SEO 优化 |
配置 Hexo 可参考官方配置文档
1 | # 生成一个静态文件 |
在博客根目录下打开 GitBash ,输入touch .gitignore,复制下面内容
(注意在博客根目录下创建.txt文件命名为.gitignore <— 这种方法容易出错,容易找不到.gitignore文件,就干脆别用)
1 | # dependencies |
因为部署是通过 GitHub Actions 自动部署,无需本地部署,只需要直接提交其他文件就行了,上面那些文件不用提交
可以在 GitBash 中输入cat .gitignore检查一下
Hexo 主题安装
可参考
注意要把博客源码提交到私人仓库并用GitHub Actions自动部署的话
-
删除主题文件夹里的
.git执行
rm -rf themes/butterfly/.git -
每次更新主题的话记得删除
.git避免报错
托管到 GitHub
-
创建一个私有仓库,用于储存博客源代码
-
创建一个公开仓库,用于显示博客
-
点击右上角头像 > settings > Developer settings > Person access tokens > Tokens (classic) > Generate new token (classic)
- Expiration(到期时间) > No Expiration
- 勾选上 repo 和 workflow
- 注意所有生成的令牌都不要删,以防误删哪个,避免麻烦
-
复制这个令牌
-
在私有仓库(存源码的仓库)下 > settings > Secrets and variables > Actions
名字随便起,Secret 中粘贴刚才复制到令牌,
注意,Secret的名字用大写字母,可以有下划线
-
返回私有仓库Code界面,并选择SSH协议,可以看到一些提示的指令
1 | #…or create a new repository on the command line |
- 在
Wenqi_Blog文件夹下,打开 GitBash- 运行
git init - 运行
git remote add origin git@github.com:Venqi-S/BlogSource.git进行远程连接 - 运行
git branch -M main将当前分支改为main,也可以是master
- 运行
- 在
.github文件夹下创建workflows文件夹,在workflows文件夹下创建deploy.yml文件 - 使用 VSCode 打开
Wenqi_Blog文件夹,编辑.github\workflows\deploy.yml文件将下面代码复制进去
1 | # 工作流名称:显示在 GitHub Actions 页面 |
- 在博客根目录下,打开GitBash,依次输入
1 | #第一次输入 |
-
回到公开仓库刷新一下,可以看到本地博客文件夹里的
pubilc文件夹的内容被推送上来Settings > Pages > Branch 选择
main/(root)> save
自定义域名访问博客
-
购买一个域名 Cheap Domain Names & Web Hosting Starting at $0.99!
只要一个 whois 就行,别的付费项目不需要
-
进入 随时随地连接、保护和构建 | Cloudflare > 添加域 > 输入刚才买的域名其他保持默认选择 > 点击继续
-
选则免费的,点击继续
-
全部删除,点击继续,然后选择确认

进入到下面的界面

-
返回 NameSilo > 进入个人主页 > 点击manage > 按顺序点击

-
然后将所有的 NameSever 都删除,把第四步出现的两个 Cloudflare 都粘贴进去,点击submit
-
返回 Cloudflare > 点击我已更新名称服务器 > 刷新一下界面等待成功(大约半个多小时)> 点击刚才添加的域名 > 选择左侧 DNS > 记录
-
打开GitHub 博客的公开仓库 > Settings > Pages > Custom domain > Learn more about configuring custom domains > Manage a custom domain > 找到第五条的八个 IP 地址
-
返回 Cloudflare 添加四个 A 记录和四个 AAAA 记录,名称都写@,且先关闭自动代理状态(方便 GitHub 识别域名的解析),其他保持默认
把八条解析记录都添加进去
在进行下一步时请看最后的“注2”,将其中的代码加入到
.github\workflows\deploy.yml文件中去,然后和下一步一起 push 上去 -
在本地文件
_config.yml中修改 url 为https://自己的域名,然后上传至 GitHubadd > commit > push
-
返回 GitHub 在 Custom domain 填写自己买的域名 > 点击 save
-
最后在 Cloudflare 中把每个记录启用代理,然后稍等一会,就能用自己的新域名访问博客了
注1:
出现图片中的情况是因为
网站裸域名 (Apex domain) wqblog.xyz 已经正确指向 GitHub Pages(A/AAAA 记录均已配置),所以 wqblog.xyz 可以正常访问。但 www.wqblog.xyz 在 DNS 中是一个独立的子域名,目前没有配置任何记录,导致 GitHub Pages 提示 www.wqblog.xyz is improperly configured。解决方法是在 DNS 中新增一条 CNAME 记录,将 www 指向 venqi-s.github.io,使 www.wqblog.xyz 与裸域名同时生效,并由 GitHub Pages 自动处理 HTTPS 和跳转。(ChatGPT 说的)

所以返回 Cloudflare ,再添加一个记录
类型 CNAME, 名称 www ,内容 venqi-s.github.io 上图红框的内容,其他默认
稍等一会,返回 GitHub 刷新一下就没有警告了
注2:现在每次提交都需要重新在 pages 页面重新输入域名。因为每次部署都会“覆盖 GitHub Pages 的发布分支”,把 CNAME 文件删掉了,GitHub Pages 就会忘记你的自定义域名,所以每次 push 后都要重新填域名
解决方法:
在 .github\workflows\deploy.yml 文件中加入下面一段
1 | - name: Deploy to GitHub Pages |
然后在 source 文件夹内新建一个 CNAME 文件内容写购买的域名如 wqblog.xyz
作用:
-
每次部署都会自动写入
CNAME -
就算发布分支被完全覆盖,域名也不会丢


