添加Qexo后台

Qexo是一个美观、强大的在线静态博客管理器。

  • 简单
    支持使用 Vercel 零成本一键部署, 您只需要配置一个免费数据库

  • 强大
    无限的拓展性, 应有尽有的配套功能尽在掌握

  • 美观
    基于 Bootstrap & Argon 的现代化响应式风格

  • 全面
    Django 后端, 支持多种平台和数据库

本文将介绍如部署Qexo后台,包括其Github Actions,数据库,Qexo后台。

其工作原理为,Qexo通过修改Github静态资源库即未经编译的源文件(以下简称源库),储存未经编译的源文件,同时启用Github Actions,在检测到push后启动Github Actions按照预设编译源文件并且push到Github pages库即已经经过编译的Hexo页面文件。来代替手动Hexo g & Hexo d

Qexo后台--------->通过Github token修改-------->Github静态资源库-------->触发Github Actions-------->编译源库,推送pages库-------->完成对静态网站的修改

手动方式为

本地-------->修改源文件-------->本地生成编译(Hexo g)-------->本地推送至pages库-------->完成对静态网站的修改

设置GitHub Actions 自动部署

确保你的hexo之前能够提交

确认_config.yml文件中有类似如下的 GitHub Pages 配置:

1
2
3
4
deploy:
type: git
repo: git@github.com:yourname/repo.git
branch: main

修改为你自己的仓库地址和分支

git提交储存库

  1. 打开终端

    • 在你的Windows系统中,可以通过“Git Bash”来打开Git的命令行界面喵。
  2. 导航到项目目录

    • 使用cd命令来进入你想要提交的目录的所在位置喵。例如,如果你的项目位于C:\Users\Username\MyProject,你需要输入以下命令喵:
    1
    cd /c/Users/Username/MyProject
    • 确认这是你想要提交的目录喵。
  3. 初始化Git仓库(如果尚未初始化的话):

    • 在项目根目录下,运行初始化命令来创建新的Git仓库喵:
    1
    git init
  4. 添加文件

    • 将目录中的所有文件添加到Git仓库中的暂存区喵:
    1
    git add .
    • . 表示添加当前目录下的所有文件喵。如果只想添加特定文件或目录,可以指定它们的路径喵。

    • 即为经编译的hexo资源文件,不确定的话添加hexo clean后剩下的文件。

  5. 提交更改

    • 用以下命令提交你刚才添加到暂存区的更改喵:
    1
    git commit -m "Your commit message"
    • 替换Your commit message为你想要记录的提交信息喵。
  6. 连接到远程储存库(如果还没有的话):

    • 创建分支
    1
    git branch -M main
    • 需要先在GitHub或其他git服务上创建一个新的储存库喵。
    • 然后用以下命令添加远程仓库地址喵(仅需第一次提交时操作):
    1
    git remote add origin your-repository-url
    • your-repository-url替换为实际的储存库URL喵。

    eg. git remote add origin git@github.com:51hhh/HexoActions.git

  7. 推送到远程储存库

    • 用以下命令推送提交到远程储存库的主分支上喵(可能会需要你输入用户名和密码):
    1
    git push -u origin main
    • 如果你是第一次将本地仓库推送到远程,-u参数会将本地的main分支与远程的同名分支链接起来,并把远程仓库设为默认的上游仓库喵。

按照以上步骤,你就可以将Windows系统中的目录提交到Git储存库啦喵!记得保密好你的用户名和密码喵。如果Git提示你使用token作为密码喵,请按照GitHub的指导生成token并使用它来进行认证喵。

再次提交:

将文件添加到Git仓库中的暂存区喵
git add 文件

提交你刚才添加到暂存区的更改喵
git commit -m "Your commit message"

推送到远程储存库
git push -u origin main

若你不知道哪些是需要提交的静态文件

可参照:主题文件,source(包含网站的页面信息),_config.yml,以及部分自定义内容。

git提交可能遇到的问题:
  1. warning: adding embedded git repository:

尝试添加的目录是一个嵌入的git仓库(子Git仓库)喵。也就是说,在这个目录下有另一个.git目录,它有自己的版本控制历史喵。如pull主题文件或插件可能带有,删除.git目录,重新添加即可。

  1. git remote add origin 后应该添加git@github.com:user/XXX.git的连接,而不是https://github.com/XXX ,若添加错误可使用git remote remove origin命令来移除错误的origin哦喵~

  2. hint: Updates were rejected because the remote contains work that you do,如果你在上传了储存库后更改了储存库内文件,会导致远程仓库被更改,而产生错误。表示你试图推送的更改被拒绝了,原因是远程仓库中包含了你本地没有的提交喵。可能是因为其他人已经推送了他们的更改到远程仓库,或者你在其他地方做了提交然后没有先拉取这些修改喵~

从远程仓库拉取最新的更改,并与你的本地分支合并喵。这通常可以通过下面的命令完成喵:git pull origin main这会把远程main分支上的更改拉取到你的本地main分支,并试图自动合并喵。
本地和远程的更改都被整合并提交后,你就可以再尝试推送到远程仓库喵git push -u origin main

GitHub Actions设置

首先需要生成一对公私钥

1
ssh-keygen -t rsa -b 4096 -C "Hexo Deploy Key" -f github-deploy-key -N ""

文件位置:

windows:C:\Users[当前用户名].ssh

linux:~/.ssh

github-deploy-key —— 私钥
github-deploy-key.pub —— 公钥

其中,私钥是给Hexo未经过编译的源文件仓库的,也就是上面刚刚创建的。

公钥是给GitHub Pages代码仓库也就是你博客的页面文件,用于 Hexo 部署时的写入工作的。

添加私钥

首先在 GitHub 上打开Hexo未经过编译的源文件仓库,访问 Settings -> Secrets --> actinos

https://github.com/name/name/settings/secrets/actions

添加新的Secrets

名字部分填写:HEXO_DEPLOY_KEY,注意大小写,这个后面的 GitHub Actions Workflow 要用到,一定不能写错。

在 Value 的部分填入 github-deploy-key 中的内容

添加公钥

接下来我们需要访问存放网页的GitHub Pages代码仓库,也就是你博客的页面文件,比如:yourname.github.io 这种,访问 Settings -> Deploy keys

Add deploy key 来添加一个新的公钥:

https://github.com/name/name/settings/keys

Title 中输入:HEXO_DEPLOY_PUB 字样,当然也可以填写其它自定义的名字。

Key 中粘贴 github-deploy-key.pub 文件的内容。

注意:一定要勾选 Allow write access 来打开写权限,否则无法写入会导致部署失败。

创建 Workflow

图示:

首先在Hexo未经过编译的源文件仓库中创建一个新文件.github/workflows/deployment.yml,文件名可以自己取,但是一定要放在 .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
36
37
38
39
40
41
name: Hexo Deploy

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
if: github.event.repository.owner.id == github.event.sender.id

steps:
- name: Checkout source
uses: actions/checkout@v2
with:
ref: main

- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '12'

- name: Setup Hexo
env:
ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "zzhhh2005@gmail.com"
git config --global user.name "51hhh"
npm install hexo-cli -g
npm install

- name: Deploy
run: |
hexo clean
hexo deploy

只需要改 git config 里面的名字和邮件地址

注意:在此处更改仓库文件会导致后续git提交错误

hint: Updates were rejected because the remote contains work that you do,如果你在上传了储存库后更改了储存库内文件,会导致远程仓库被更改,而产生错误。表示你试图推送的更改被拒绝了,原因是远程仓库中包含了你本地没有的提交喵。可能是因为其他人已经推送了他们的更改到远程仓库,或者你在其他地方做了提交然后没有先拉取这些修改喵~

从远程仓库拉取最新的更改,并与你的本地分支合并喵。这通常可以通过下面的命令完成喵:git pull origin main这会把远程main分支上的更改拉取到你的本地main分支,并试图自动合并喵。
本地和远程的更改都被整合并提交后,你就可以再尝试推送到远程仓库喵git push -u origin main

验证

下面就是 GitHub Actions 页面显示的运行结果,显示部署成功即可。

Actions部署出错怎么办

常见错误:

  1. hexo 编译生成错误,检查是否已经上传所以静态资源,查看报错信息缺少什么文件,已经npm,hexo版本以及编译系统对你的资源文件兼容性。

  2. SSH密钥的权限问题,检查你为ACTIONS_DEPLOY_KEY设置的SSH密钥是否具有对应仓库的写入权限喵。

  3. _config.yml文件中的deploy配置是否设置正确,repo: git@github.com:user/repo.git # 是否使用的是使用SSH路径

  4. 环境变量和Git配置,确保你的GitHub Actions配置文件中的环境变量和Git配置正确无误喵。

  5. 检查deployment.yml中的邮箱和用户名设置正确。

如果问题仍未解决,你可能需要考虑以下步骤喵:
  • 在本地环境中测试部署流程,确认没有问题后再到GitHub Actions中配置喵。
  • 检查GitHub Actions的日志,看是否有更详细的错误信息喵。
  • 根据日志中给出的问题链接,检查Hexo的官方故障排除指南喵。

Qexo 数据库创建

由于目前planetscale需要绑定信用卡,且不支持银联,故选择其它。

Vercel提供的免费数据库是Bata功能,故选择其它

MongoDB 数据库已经注册并提供给评论系统使用,故选择其它。

SupaBase 数据库就用这个了

来到官网注册 SupaBase 账号 创建免费 SupaBase 数据库, 区域一定要选择 N. Virginia (us-east-1) 在项目设置页面获取数据库连接信息, 密码即为你所设置的值

来到你创建的数据库主页面

点击连接

名称 意义 示例
PG_HOST PostgreSQL 数据库连接地址 看图
PG_PORT PostgreSQL数据库通信端口 默认应填写 5432
PG_USER PostgreSQL 数据库用户名 postgres.+*
PG_DB PostgreSQL 数据库名 postgres
PG_PASS PostgreSQL 数据库密码 你设置的密码

Qexo部署

点击按钮一键部署

部署到 Vercel

首次部署会报错, 请无视并重新进入项目, 在项目设置界面添加环境变量 Environment Variables

名称 意义 示例
PG_HOST PostgreSQL 数据库连接地址 看图
PG_PORT PostgreSQL数据库通信端口 默认应填写 5432
PG_USER PostgreSQL 数据库用户名 postgres.+*
PG_DB PostgreSQL 数据库名 postgres
PG_PASS PostgreSQL 数据库密码 你设置的密码

在 Deployments 点击 Redeploy 开始部署, 若没有 Error 信息即可打开域名进入初始化引导

同理,因为vercel域名被墙,若在国内访问,需要自定义域名。

以上都完成后,即可进入初始化引导,填入信息即可。