1. 这个博客是个啥?
这是个用于发癫记录每日有价值的事情的博客。听起来是不是听像日记的?所以我就叫它赛博笔记本了。
2. 为什么要建立这个博客?
- 用于记录解决过的问题,不用翻收藏夹。
- 用于记录生活的中的琐事,
拯救我日益退化的记忆力。 - 未完待续
3. 怎样部署的这个博客?
博客使用Hexo 博客框架和Next 主题。本人技术水平不算很高,就不班门弄斧了,可以参考以下资料:
我在这里主要讲如何在Cloudflare Pages和Github Pages上部署博客。
前置条件
- 一个可以运行的 Hexo 博客
- Cloudflare/Github 账户
- 良好的网络连接情况
在 Github 使用静态界面部署
- 一般来说,在 Hexo 框架配置文件中配置好
deploy:代码块,并确认能向 Github 仓库推送文件后,通过hexo d方法可以很方便的将编译出的静态文件(即/pubic文件夹中的文件)推送到仓库中。 - 此时,在仓库的
Settings > Pages > Branch中配置静态文件所在的分支和目录后保存。刷新网页将分配的域名填入 Hexo 框架配置文件中的url:参数中。 - 重新推送仓库,部署完成,访问步骤 2 中获得的域名即可访问博客。
Tips:
- Github Pages 的域名是
<你的Github用户名>.github.io——在你的仓库名称和域名一样的情况下是这样的。- 当仓库名称不是
<你的Github用户名>.github.io时,你仓库所对应的域名为<你的Github用户名>.github.io/<仓库名>,以路由的形式指向仓库。- 确认好你的 Github Pages 域名,需要填入 Hexo 框架配置文件中的
url:参数中。


至于配置自定义域名啥的我就不讲了,网上一搜一大把。
在 Github 使用 Github Action 部署
Github 提供了一种测试版的方式——使用 Github Action 对整个项目进行编译以进行部署。这种方式。。。。。。实际上并没有啥区别,毕竟最后都是把/public文件夹内的静态文件上传到 Github Pages。官方的说法是最适合使用框架和自定义构建过程(Best for using frameworks and customizingyour build process.)。但我觉得唯一的好处应该是不用新开一个分支用来存储原始项目了。

然而,在Github提供的工作流文件中并没有Hexo的模板(Cloudflare也没有,不知道啥情况),但可以参考Github的给出的其他文件自己写一个。 对比Jekyll和静态文件的工作流文件,可以看到三块类似的代码块,下面对这三块代码块进行解释:

-
Checkout & Setup Pages——前者用于签出仓库,而后者用于启动 Github Pages 并提取有关站点的各种元数据。actions/configure-pages用于初始化 Github Pages 并提取有关站点的各种元数据:
![actions/configure-pages输出 actions/configure-pages输出]()
由于actions/checkout通过配置submodules参数可以签出 Git 子模块(Git Submodule)。所以理论上可以 Fork 一份 Next 主题的仓库进行修改,然后作为子模块添加到博客主仓库中,以简化主题的更新和提高代码复用。 -
actions/upload-pages-artifact——用于打包构建完成的文件并作为一个工件上传,拥有两个参数:- path: 包含静态文件的目录的路径。默认值为
_site/,即 Jekyll 工作流文件中定义的输出文件夹。 - retention-days: 工件将在几天后过期。默认值
"1",即一天后过期 - 上传的工件可以在对应的 Github Action 工作流运行的可视化图中找到
- path: 包含静态文件的目录的路径。默认值为
-
actions/deploy-pages——用于将build任务中上传的工件部署为 GitHub Pages 站点- 返回已部署的 GitHub Pages 的 URL,
deploy任务通过环境变量url获取返回值,该环境变量将显示在存储库的部署页(通过单击存储库主页上的“环境”进行访问)和工作流运行的可视化图中。
- 返回已部署的 GitHub Pages 的 URL,
了解了这些 Action 的作用后,我们只需要修改一下 Jekyll 工作流的构建部分,然后给actions/upload-pages-artifact指定个静态文件的路径就行了。
1 | # Sample workflow for building and deploying a Hexo site to GitHub Pages |
我使用actions/setup-node指定了 nodejs 版本与我本地的一致,并使用actions/cache缓存了 NPM 下载的依赖。这些操作参考了Hexo 官方文档的 Github Action 部分,区别在于官方文档里也是将静态文件推送到仓库而不是直接部署。
由于项目的package.json中定义的build脚本是hexo generate并且依赖中包含"hexo": "^6.3.0",,所以不需要在环境中全局安装hexo-cli了,直接使用npm run build构建,最后在actions/upload-pages-artifact中指定path参数到/public文件夹就行。
在 Cloudflare Pages 部署
-
Cloudflare Pages 的部署方法与使用 Github Action 部署类似,登录Cloudflare 控制面板,在侧边栏找到
Pages,再点击创建项目,在下拉框中找到连接到Git(如果你没有创建过Pages,应该是点击创建项目,在跳转的网页中点击连接到Git)。随后在 Github 与 Gitlab 间选择储存库,我使用的是 Github,点击连接到Github。
![创建Pages 创建Pages]()
-
随后跳转到 Github 应用安装界面,可以选择在哪些仓库安装和授权 Cloudflare Pages 应用,最后点击
Install & Authorize并验证密码后回到 Cloudflare 这时候应该会将你授权的仓库现实在页面中。选择 Hexo 博客的仓库,点击开始设置。
![授权]()
-
参考下图填写设置
![]()
Hexo 7.0.0 发布后,由于依赖包变化,最低需要使用 nodejs v14.x.x,需要配置环境变量NODE_VERSION环境变量不是必须的,NODE_VERSION为 v14+,错误的配置会导致构建失败,可以参考下图
![NODE_VERSION]()
变量名称填NODE_VERSION,值填当时 nodejs 最新的 LTS 版本就行(本文修订时最新为v20.10.0),随后点击保存。 -
Cloudflare 会在仓库收到新推送后自动构建和发布。
Tips: 你需要将 Cloudflare Pages 的域名填入 Hexo 框架配置文件中才可以正常访问!
文章历史
- 2023-04-01 首次发布
- 2023-12-04 修订有关 Hexo 7.0.0 升级导致的 Cloudflare Pages 编译环境默认 Node 版本过旧的问题




