将博客迁移至 Cloudflare Pages
kecho

记录将 Hexo 静态博客从 Github Pages 迁移至 Cloudflare Pages 的过程

对比

Github Pages Cloudflare Pages
访问速度 较慢 较快
中文支持
ipv6支持
自动化部署 有,但需自己写代码实现 有,实现直观简单,并且每次部署提供唯一的域名供预览,部署回滚很方便
提供的域名 由用户名组成,比较好记 由项目名加其它字符组成,不太好记

通过以上对比可以看出 Cloudflare Pages 有许多优点,虽然它提供的域名不太好记,但我有自己购买的域名,可以通过自定义域名进行访问。

回顾

先来回顾一下 Github Action 自动化部署过程。
我们知道 Github Pages 上显示的页面是仓库中一些诸如 HTML、CSS、JS 等一些静态文件(即 public 文件夹中存放的内容)组成的,之前为了实现自动化部署需要再新建一个仓库,用于存放 Hexo 项目的所有文件(假设仓库名为 HexoBlog),此外还需要在该项目中新建一个 yml 文件(假设文件名为 hexo-cli.yml),并将其放在 HexoBlog/.github/workflows 目录下,文件中的内容如下:

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: HEXO CI

on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Configuration environment
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "kechocy"
git config --global user.email "61276192+cykecho@users.noreply.github.com"
- name: Install dependencies
run: |
npm i -g hexo-cli
npm i
- name: Deploy hexo
run: |
hexo clean && hexo generate && hexo deploy

文件中的git config那两行需要换成自己的相关信息。

为了自动化时能够通过 SSH 访问仓库,还需要设置密钥对(密钥对可通过ssh-keygen生成),过程如下:

  1. 在 HexoBlog 仓库中找到Settings -> Secrets,为其添加私钥,名称要和hexo-cli.yml文件中保持一致(假设为HEXO_DEPLOY_PRI

  2. 在静态文件存储仓库中找到Settings -> Deploy keys,为其添加公钥(名称可设为HEXO_DEPLOY_PUB)。

此时在本地修改文件内容并 push 到 HexoBlog 仓库后,Github Action 就会自动执行代码进行部署,完成博客的更新。

开始迁移

  • 访问 Cloudflare 进行注册登录

  • 进入面板后左侧导航选择Pages

  • 选择新建项目->连接到 Git,此时授予 Github 中 HexoBlog 仓库的读写权

  • 设置项目名和分支名

  • 设置构建和部署

    • 框架预设选择 None

    • 构建命令填 npm run clean && npm run build(可在package.json中预设命令脚本)

    • 构建输出目录填 public

  • 开始部署

  • 自定义域名:使用 CNAME 解析或更换 DNS 服务器地址

注意:在迁移到 Cloudflare Pages 之后就不需要hexo-deployer-git了,需要删除_config.yml中的相关配置,同时也可以删除package.jsonpackage-lock.json中对应安装模块的声明。

hexo-deployer-git 会将 HexoBlog 仓库中的 public 文件夹中的内容,同步到静态文件存放仓库,同步仓库位置可在_config.yml文件中修改。可通过代码hexo deploy进行一键部署

  • 本文标题:将博客迁移至 Cloudflare Pages
  • 本文作者:kecho
  • 创建时间:2022-08-08 12:19:37
  • 本文链接:https://blog.kecho.top/2022/将博客迁移至 Cloudflare Pages.html
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论