一文详解Hexo 博客搭建

一文详解Hexo 博客搭建

💡 原文中文,约4000字,阅读约需10分钟。
📝

内容提要

本文介绍如何利用GitHub Actions将Hexo博客自动部署到GitHub Pages。作者采用双仓库方案:私有仓库存源文件,公开仓库存静态页面。文章详细说明了Hexo环境搭建、创建Token、配置工作流文件、修改_config.yml及设置自定义域名等步骤,并提醒注意Node版本兼容性和备份CNAME文件。

🔎

延伸解读

双仓库方案的优势与注意点

文章采用双仓库方案,将源文件放在私有仓库,静态页面放在公开仓库,以避免源文件暴露。这种做法的好处是保护源码和配置,但需要注意私有仓库的GitHub Actions免费额度有限,不过对于Hexo博客的日常部署通常足够。另外,若已有GitHub Pages仓库,可复用,只需新建源文件仓库。

Node版本兼容性风险

工作流中指定了node-version为12,因为旧版Hexo可能无法在新版Node上生成。作者提到最新版Node 24反而无法生成,因此读者需根据自己Hexo和主题的版本调整Node版本。若遇到生成失败,可尝试降低Node版本,或升级Hexo及主题以兼容新版Node。

备份与CNAME文件丢失提醒

作者提醒,如果已有GitHub Pages,务必做好备份,因为部署过程中可能出现CNAME文件丢失的情况。CNAME文件用于自定义域名,若丢失会导致域名解析失效。建议在源仓库中保留CNAME文件,并在部署流程中确保其被复制到public目录,或定期检查线上文件。

Q&A

如何使用GitHub Actions自动部署Hexo博客到GitHub Pages?

使用GitHub Actions自动部署Hexo博客到GitHub Pages,需要创建两个仓库:一个私有仓库存放博客源文件,一个公开仓库存放生成的静态页面。在私有仓库中配置GitHub Actions工作流(deploy.yml),当推送到main分支时自动执行构建和部署。工作流中需要设置Node.js环境、安装依赖、运行hexo generate生成静态文件,然后推送到公开仓库的master分支。同时需要生成Personal access token并配置为仓库的Secret(如GH_TOKEN),以便工作流有权限推送。

为什么作者选择使用两个仓库而不是两个分支来管理Hexo博客?

作者选择使用两个仓库(一个私有仓库存放源文件,一个公开仓库存放静态页面)而不是两个分支,是因为将博客源文件暴露在公开仓库中存在一定风险。使用私有仓库可以保护源文件,而公开仓库仅存放生成的静态页面,既安全又方便部署。

如何创建GitHub Personal access token并配置到仓库中?

创建Token的步骤:点击头像 -> Settings -> Developer Settings -> Personal access tokens -> Tokens (classic) -> Generate new token (classic),命名并勾选repo和workflow权限,然后生成。之后在私有仓库(如blog_base)的Settings -> Secrets and variables -> Actions中,点击New repository secret,Name设置为GH_TOKEN(可自定义),Secret粘贴生成的token(以ghp_开头)。

在配置GitHub Actions工作流时,node-version参数有什么注意事项?

node-version参数需要根据Hexo版本进行选择。旧版Hexo可能不兼容新版Node.js,例如作者的主题使用Hexo版本较老,使用Node 12可以正常生成,而最新的Node 24反而无法生成。因此需要根据实际使用的Hexo版本调整node-version,确保构建成功。

如何为Hexo博客配置自定义域名?

配置自定义域名需要两步:1. 在GitHub Pages仓库的Settings -> Pages中,将Custom domain设置为你的域名(如www.yourdomain.xxx),并勾选Enforce HTTPS。2. 在域名解析服务商处添加解析记录:将www解析为CNAME指向username.github.io,将@解析为A记录指向GitHub Pages的IP地址(如185.199.108.153等),并添加AAAA记录。同时需要在仓库根目录创建CNAME文件,内容为你的自定义域名。

在.gitignore文件中应该忽略哪些文件或目录?为什么?

在.gitignore中应忽略:.DS_Store(Mac系统垃圾文件)、Thumbs.db(Windows系统垃圾文件)、db.json、*.log、public/(本地生成的静态页面,由GitHub Actions自动生成)、.deploy/、node_modules/(依赖包,体积大且不同平台可能不同,不应上传)。这样可以避免不必要的文件进入版本控制。

如果之前已有Github Pages,在迁移到新方案时需要注意什么?

如果之前已有Github Pages,需要做好备份,防止文件丢失。作者在迁移过程中就遇到了CNAME文件和其他文件丢失的情况,因此务必提前备份重要文件,尤其是CNAME文件,以确保自定义域名和网站配置不丢失。

🏷️

标签

➡️

继续阅读