添加Qexo后台 {#添加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 自动部署 {#设置GitHub-Actions-自动部署}
确保你的hexo之前能够提交
确认_config.yml
文件中有类似如下的 GitHub Pages 配置:
|-----------------|--------------------------------------------------------------------------------------------|
| 1 2 3 4
| deploy: type: git repo: /cdn-cgi/l/email-protection:yourname/repo.git branch: main
|
修改为你自己的仓库地址和分支
git提交储存库 {#git提交储存库}
-
打开终端:
- 在你的Windows系统中,可以通过"Git Bash"来打开Git的命令行界面喵。
-
导航到项目目录:
- 使用
cd
命令来进入你想要提交的目录的所在位置喵。例如,如果你的项目位于C:\Users\Username\MyProject
,你需要输入以下命令喵:
|-----------|----------------------------------------| |
1
|cd /c/Users/Username/MyProject
|- 确认这是你想要提交的目录喵。
- 使用
-
初始化Git仓库(如果尚未初始化的话):
- 在项目根目录下,运行初始化命令来创建新的Git仓库喵:
|-----------|------------------| |
1
|git init
| -
添加文件:
- 将目录中的所有文件添加到Git仓库中的暂存区喵:
|-----------|-------------------| |
1
|git add .
|-
.
表示添加当前目录下的所有文件喵。如果只想添加特定文件或目录,可以指定它们的路径喵。 -
即为经编译的hexo资源文件,不确定的话添加
hexo clean
后剩下的文件。
-
提交更改:
- 用以下命令提交你刚才添加到暂存区的更改喵:
|-----------|---------------------------------------------| |
1
|git commit -m "Your commit message"
|- 替换
Your commit message
为你想要记录的提交信息喵。
-
连接到远程储存库(如果还没有的话):
- 创建分支
|-----------|----------------------------| |
1
|git branch -M main
|- 需要先在GitHub或其他git服务上创建一个新的储存库喵。
- 然后用以下命令添加远程仓库地址喵(仅需第一次提交时操作):
|-----------|---------------------------------------------------| |
1
|git remote add origin your-repository-url
|- 将
your-repository-url
替换为实际的储存库URL喵。
eg.
git remote add origin
[email protected]:51hhh/HexoActions.git
-
推送到远程储存库:
- 用以下命令推送提交到远程储存库的主分支上喵(可能会需要你输入用户名和密码):
|-----------|---------------------------------| |
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提交可能遇到的问题: |
- warning: adding embedded git repository:
尝试添加的目录是一个嵌入的git仓库(子Git仓库)喵。也就是说,在这个目录下有另一个
.git
目录,它有自己的版本控制历史喵。如pull主题文件或插件可能带有,删除.git
目录,重新添加即可。
-
git remote add origin 后应该添加[email protected]:user/XXX.git的连接,而不是https://github.com/XXX ,若添加错误可使用
git remote remove origin
命令来移除错误的origin哦喵~ -
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设置 {#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 {#创建-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 "/cdn-cgi/l/email-protection" 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部署出错怎么办 |
常见错误:
-
hexo 编译生成错误,检查是否已经上传所以静态资源,查看报错信息缺少什么文件,已经npm,hexo版本以及编译系统对你的资源文件兼容性。
-
SSH密钥的权限问题,检查你为
ACTIONS_DEPLOY_KEY
设置的SSH密钥是否具有对应仓库的写入权限喵。 -
_config.yml
文件中的deploy配置是否设置正确,repo: [email protected]:user/repo.git # 是否使用的是使用SSH路径 -
环境变量和Git配置,确保你的GitHub Actions配置文件中的环境变量和Git配置正确无误喵。
-
检查
deployment.yml
中的邮箱和用户名设置正确。
|------------------------| | 如果问题仍未解决,你可能需要考虑以下步骤喵: |
- 在本地环境中测试部署流程,确认没有问题后再到GitHub Actions中配置喵。
- 检查GitHub Actions的日志,看是否有更详细的错误信息喵。
- 根据日志中给出的问题链接,检查Hexo的官方故障排除指南喵。
Qexo 数据库创建 {#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部署 {#Qexo部署}
点击按钮一键部署
首次部署会报错, 请无视并重新进入项目, 在项目设置界面添加环境变量 Environment Variables
| 名称 | 意义 | 示例 |
|---------|--------------------|---------------|
| PG_HOST | PostgreSQL 数据库连接地址 | 看图 |
| PG_PORT | PostgreSQL数据库通信端口 | 默认应填写 5432 |
| PG_USER | PostgreSQL 数据库用户名 | postgres.+*
|
| PG_DB | PostgreSQL 数据库名 | postgres
|
| PG_PASS | PostgreSQL 数据库密码 | 你设置的密码 |
在 Deployments 点击 Redeploy 开始部署, 若没有 Error 信息即可打开域名进入初始化引导
同理,因为vercel域名被墙,若在国内访问,需要自定义域名。
以上都完成后,即可进入初始化引导,填入信息即可。