使用qexo为你的hexo增加一个后端

前言

因为本人电脑性能较差,而主题在经历多次魔改后,体量也逐渐变大,在本机运行的时间也在不断提高,有时甚至生成个file的时间能跑40多秒。再出于写文不方便等多个原因,我决定开始部署qexo。

准备工作

  • 一份已经配置好的完整hexo源码
  • github账户
  • vercel账户

注:本文适用于使用github+服务端的hexo部署方式,其余部署方式请参考官网Qexo | 一个美观、强大的在线 静态博客 管理器

步骤

部署qexo本体

我们这里采用vercel+PostgreSQL的部署方式

一键部署

一路下一步即可,第一次部署会报错,不必理会。

接下来开始申请vercel的数据库

vercel storage

点击进入后,选择界面选择Neon,后面的地区选择Washington, D.C., USA (East) - iad1

创建完毕后,点击connect,选择之前创建的qexo项目,等待绑定完毕。

随后在Developments界面进行redeploy即可。

注:

vercel自带的域名访问速度较慢,且有被ban的风险,所以这里最好用自有域名。

另外,域名解析时使用vercel.cdn.yt-blog.top. 作为cname解析,速度会更快。

打开部署完成的项目域名,一路初始化后到达配置页后停止,开始github的配置

上传项目

在github上创建一个私有项目,名称随意,随后创建README.md文件,不需要写内容,保存即可。

(后文中称此项目为源码仓库,称生成代码部署仓库为推送仓库)

在电脑本机将此项目clone下来,随后,将你的博客源码copy到克隆的项目目录中。

然后,删除掉以下文件

  • .deploy_git
  • node_modules
  • .git(如没有,打开显示隐藏文件即可)
  • .gitignore
  • 你的主题目录下的.git,.github,.gitignore文件

随后把项目push即可

申请token

分别在vercelgithub页面申请token即可,其中github需要Repo & Workflow权限即可。

申请完毕后保存备用。

配置qexo

将刚刚申请到的github token填入,其余按照提示填入即可,注意repo填的是源码仓库

如果没有报错,那么会进入vercel配置页面,将前文申请的token和vercel项目的project ID 填入即可。

workflow配置

经过如上配置,已经可以做到修改博客源文件了,但此时无法做到自动部署,这就需要workflow运行代码并推送。

源码仓库中创建两个Secret密钥

  • PERSONAL_TOKEN: 填入前文申请的github token
  • USER_NAME: 你的github名

随后创建一个action,内容填入如下:

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
name: 自动部署
on:
push:
branches:
- main
env:
# 使用此 git 用户部署到 github 仓库
GIT_USER: lingerbhw
# 使用此 git 邮箱部署到 github 仓库
GIT_EMAIL: 3501737127@qq.com

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 安装nodejs
uses: actions/checkout@v4
with:
node-version: 18.20.4 # 注意使用你本地电脑的node版本,防止出现bug
- name: Cache node_modules # 缓存 node_modules,提高编译速度,毕竟每月只有 2000 分钟。
uses: actions/cache@v4 # 亲测 Github 服务器编译速度比我自己电脑都快,如果每次构建按5分钟计算,我们每个月可以免费部署 400 次,Github yyds!!!
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
# 配置环境
- name: 配置环境
run: |
git config --global user.name $GIT_USER
git config --global user.email $GIT_EMAIL
# 安装依赖
- name: 安装依赖
run: |
npm install hexo-cli -g
echo "install hexo successful"
npm install
echo "init node successful"
# 部署 部署可以使用 hexo d 进行部署 也可以使用git直接推送
- name: 生成静态文件
run: |
hexo clean
hexo generate
echo "build blog successful"

- name: 部署
run: |
export TZ='Asia/Shanghai'
cd ./public
git init
git add .
git commit -m "${{ github.event.head_commit.message }} $(date +"%Z %Y-%m-%d %A %H:%M:%S") Updated By Github Actions"

git push --force --quiet "https://${{ secrets.USER_NAME }}:${{ secrets.PERSONAL_TOKEN }}@github.com/lingerbhw/hexo.git" master:main # GitHub配置,注意修改仓库地址


那么接下来,你可以测试一下是否能够部署成功

留下的坑

2025-02-04

目前这个推送会整个覆盖hexo仓库,短时间内先这么用吧.

2025-02-13(已修改)

This request has been automatically failed because it uses a deprecated version of actions/cache: v2. Please update your workflow to use v3/v4 of actions/cache to avoid interruptions

翻译一下就是action/cache这个组件太旧了,更新成v3/v4就ok