Hexo 博客搭建指北
写在前面
关于 Hexo 博客搭建,网上所谓的教程铺天盖地,跟着走了不少弯路,才发现大部分人都是在吹牛逼,最终我决定回到看官方教程的正道上来。
本文写作于 2023 年 7 月 14 日,仅为官方教程的拙劣注解与擅自补充,主要用于记录自己搭建博客的经验历程。如果能对你有所帮助,那就太好了。
准备工作-α
远程侧
新建 GitHub 公开仓库,命名为 username.github.io,选择不附带 README.md 文件。
本地侧
不迷路的前提是我们时刻清楚自己身处何方。
我们现在身处你新建的博客目录下,比如 blog/
部署 Hexo
安装 Node.js 和 Git 是安装 Hexo 的前置条件。
在 Archlinux 下,进入 blog/ 打开终端,依次执行如下命令:
1 | $ sudo pacman -S git nodejs npm # 按照必要的包 |
在 Hexo 配置文件 _config.yml 的结尾处找到以下内容并修改:
1 | deploy: |
部署 SSH 连接到 GitHub
创建公钥 ?
先检查本地有没有公钥,如果没有就新建一个:
1 | $ ls -al ~/.ssh |
接下来是著名的“三次回车”:
1 | Enter a file in which to save the key (~/.ssh/ALGORITHM): [Press enter] |
创建私钥 ?
1 | $ cat ~/.ssh/id_ed25519.pub |
将打印出的信息复制下来,到远程侧创建私钥。最后我们需要验证是否连接成功:
1 | $ ssh -T git@github.com |
如果正确匹配以下 SHA256 指纹,则输入 yes
1 | The authenticity of host 'github.com (IP ADDRESS)' can't be established. |
如果看到它和你打招呼,即代表连接成功。
项目管理-α
提示:前方出现 git,请带好那张图。
本地侧
知己知彼,百战不殆。
部署 Git
首先要明确我们的战略,我们的博客将来要部署在基佬仓库,我们不仅希望其能对外展示,还希望其托管我们源文件夹下的代码,以防日后遭遇不测。
因此我们需要使用双分支,其中,main 分支用于托管代码,而 gh-pages 分支用于展示博客。
这也是为什么我们需要使用 git 的原因——我们需要基佬仓库帮助我们托管源文件夹下的代码。
Git 配置
出于某种精神洁癖,以下使用 main 作为远程仓库和本地仓库的默认分支名称。
1 | $ git config --global init.defaultBranch main # 设置本地仓库默认分支为 main |
Git 管理
首先在 blog/ 下部署本地仓库,并与远程仓库取得联系。
1 | $ git init # 本地仓库初始化 |
接下来我们将对你新建的远程仓库进行第一次推送。
1 | $ git add --all # 将全部文件载入缓冲区 |
添加 Workflows
1 | $ node -v |
记下 nodejs 的版本号,将来更换 nodejs 版本需要重新记录。
新建 blog/.github/workflows/pages.yml 文件,填入以下内容,将其中的 20 改为你刚才记下的版本号。
1 | name: Pages |
接下来进行第二次推送:
1 | $ git add --all |
现在远程仓库里已经出现了我们期望的两个分支,接下来还剩最后一步——切换展示分支。
远程侧
在远程仓库中选择 Settings > Pages > Source,将 main 改为 gh-pages 并 Save,此时博客可通过域名展示。
恭喜!你现在拥有了一个可以公网访问的个人博客网站!而且你没花一分钱!
怎么样,是不是抑制不住内心的激动呢?维护一个博客还有一段漫长的路要走,希望你不忘初心,继续前进!
缺失之环-β
比较本地 main 仓库与远程 main 仓库发现,远程 main 仓库缺少 node_modules 文件夹。
这是一种解耦合设计,但是也导致我们在 β 线工作时遇到一些问题。接下来我们解决这些问题。
与 α 线相比,在 β 线里我们开局有一个远程仓库,那是我们在 α 线建立的记忆资料,现在我们要从中取回记忆。
当我们身处在一个全新的 blog/ 目录下,
1 | $ sudo pacman -S git nodejs npm |
最后一行命令是在补齐缺失的依赖包,官方的建议是:
1 | $ rm -rf node_modules && npm install --force |
至此,你可以在 β 线继续开展 hexo 的工作了。