Hexo静态博客搭建教程(仅供参考)

前言

本篇博客会讲一讲我的博客现在的架构以及如何做一个差不多的博客。

架构

如果使用Hexo等静态页面生成器来构建个人博客的话肯定是建议使用Git + CI来进行储存+构建,因为如果静态博客一直在本地拖沓着没有版本控制/备份再加上NodeJS等解释器语言模块化的特性,用不了多久一直在本地部署的博客就会变得臃肿不看,在多设备的情况下也不方便进行文件管理。

准备

此处不赘述仓库建库
如果想全流程使用 GitHub 的话那我们也可以选择使用 GitHub Actions 作为 CI 自动构建,Pages 作为 PaaS 来分发的方式来搭建 Hexo 博客。
  1. 为 Actions 准备一份 SSH 密钥作为其 CI 部署时向储存库提交更改的凭据, 在终端执行 ssh-keygen -f xxxxx(-f 后的字段可自定义),一路回车完毕即可,一个带有.pub 后缀 (公钥),一个没有 (密钥),两个都留着备用。

  2. 打开 GitHub,为 Pages 创建一个公开仓库(如果有 GitHub Pro/Team/Enterprise 那也可以是私有仓库)xxxx.github.Io xxxx应为你的 GitHub 用户名/组织名

  3. 来到xxxx.github.Io 仓库设置里添加前文生成的公钥到仓库,内容是刚刚创建的公钥(请将文件内容一字不差地复制进去),然后保存。不要忘记勾选允许写入权限。

  4. xxxx.github.Io 仓库的 SSH 信息复制走,备用。

  5. 回到我们刚刚存放源文件的私有库,添加对应公开仓库公钥的私钥,名称自定义。

  6. 打开私有库的_config.yml,修改 deploy 配置

    1
    2
    3
    4
    deploy:
      type: git
      repo: <刚刚复制的xxxx.Github.Io仓库的SSH信息>
      branch: main
  7. 然后打开 package.json, 在”dependencies”里加入”hexo-deployer-git”: “^3.0.0”,保存 (注意源文件中是否有此标注)

  8. 新建目录/文件 .github/workflows/HexoCI.yml 在文件内写入如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    name: CI  
    on:
    push:
    branches:
    - main
    jobs:
    build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout source
    uses: actions/checkout@v1
    with:
    ref: main
    - name: Setup NodeJS
    uses: actions/setup-node@v2
    with:
    node-version: ${{ matrix.node_version }}
    - name: Setup Hexo
    env:
    ACTION_DEPLOY_KEY: ${{ secrets.<刚刚的私钥的名字> }}
    run: |
    mkdir -p ~/.ssh/
    echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    ssh-keyscan github.com >> ~/.ssh/known_hosts
    git config --global user.email "<Your Email>"
    git config --global user.name "<Your NickName>"
    npm install hexo-cli -g
    npm install
    sudo timedatectl set-timezone Asia/Shanghai
    - name: Deploy Hexo
    run: |
    hexo clean
    hexo d