在本地部署 “hexo后端” - Qexo
原文地址:https://blog.iloli.love/archives/33773f16/
在阅读本文之前,你需要做的事:已经在 服务器/本地 部署好 hexo 及其相关依赖 ,还有python3.x及对应版本的pip 以及 git / curl 等命令
本文应用场景为通过本地部署的 Qexo 控制本地部署的 hexo ,为了轻量化,数据库使用SQlite
本文假设运行 python 的命令为
python3
,运行 pip 的命令为pip3
,Qexo 目录为 /data/qexo
接下来我们开始部署 Qexo
下载所需文件
运行命令
如果是境内鸡则运行:
1 | git clone https://ghproxy.com/https://github.com/Qexo/Qexo.git /data/qexo && cd /data/qexo && curl https://ghproxy.com/https://raw.githubusercontent.com/miaowmint/Qexo-docker/main/qexoconfigs.py -o configs.py && mkdir -p db && cd db && curl https://ghproxy.com/https://raw.githubusercontent.com/miaowmint/Qexo-docker/main/db/db.sqlite3 -o db.sqlite3 |
如果是境外鸡则运行:
1 | git clone https://github.com/Qexo/Qexo.git /data/qexo && cd /data/qexo && curl https://raw.githubusercontent.com/miaowmint/Qexo-docker/main/qexoconfigs.py -o configs.py && mkdir -p db && cd db && curl https://raw.githubusercontent.com/miaowmint/Qexo-docker/main/db/db.sqlite3 -o db.sqlite3 |
命令解释:git clone Qexo的所需文件到 /data/qexo ,然后在该目录下载数据库配置文件,接下来在该目录下新建 db 文件夹,在 db 文件夹中下载数据库文件
运行结果如图所示
修改配置文件
接下来修改 /data/qexo/configs.py ,将其中的 127.0.0.1 和 yourqexo.com 分别修改为 你的服务器IP 和 你用来访问Qexo的域名(如果有的话)
安装python依赖包
然后运行如下命令安装Python包
1 | cd /data/qexo && pip3 install -r requirements_withoutmsyql.txt |
部分运行结果如图所示
如果这一步遇到报错,可能是因为你的python版本不合适,或者网络问题,或者镜像源问题,或者各种奇奇怪怪的问题;总之请自行解决
另附一份可能的报错以及解决方案:
对于如下的报错,可以将上面的命令改为下面这个
1 | cd /data/qexo && pip3 install -r requirements_withoutmsyql.txt --ignore-installed PyYAML |
运行 Qexo
接下来运行命令
1 | python3 manage.py makemigrations && python3 manage.py migrate |
运行结果如图,看到 ERROR: Provider获取失败, 跳过(functions.py.<module>[line:55])
不用理会,是正常现象
如果没有报错的话就可以继续运行如下命令
1 | python3 manage.py runserver 0.0.0.0:8000 --noreload |
可以看到 Qexo 已经运行成功了
此时访问 http://你的服务器IP:8000 就可以进入 Qexo 初始化并愉快的使用 Qexo 了
使用 supervisor 常驻 Qexo 进程
在上面的步骤虽然成功运行了 Qexo ,但是如果我们按了 Ctrl + C 或者断开 ssh 连接,Qexo 进程就莫得了,总之我们要想办法常驻 Qexo 进程
有一个方法是使用 screen 新建一个视窗运行 python3 manage.py runserver 0.0.0.0:8000 --noreload
这个方法确实有效,但缺点是当服务器重启后无法自动运行 Qexo ,所以我们可以使用另一种方案:使用 supervisor 常驻 Qexo 进程
这里我使用的是宝塔面板里的插件 进程守护管理器 ,这个插件就是基于 supervisor 的,如果你不想使用宝塔面板,请自行找教程安装 supervisor ,我会在下面给出子配置文件
按照下图所示添加守护进程,点击确定即可
以下为该配置对应的 supervisor 子配置文件
1 | [program:qexo] |
FAQ
如果我想通过域名访问 Qexo 应该怎么做
通过 Nginx 反代 http://127.0.0.1:8000
如果使用CDN,并且CDN支持自定义回源端口,则可以在CDN侧设置 使用 HTTP 回源 8000 端口
如果我的服务器上有 python3.x 但是没有对应的 pip 怎么办
试试运行如下命令
1 | curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3 get-pip.py |
使用 Qexo 更新文章时无法自动部署,报错 /bin/sh: line 1: hexo: command not found
使用 hexo 的完整路径
我是通过宝塔插件 nodejs 管理器 安装的nodejs,npm 安装的是hexo-cli ,完整路径为 /www/server/nodejs/v18.18.2/lib/node_modules/hexo-cli/bin/hexo
将其中的v18.18.2修改为你使用的nodejs版本
如果是其他途径安装的,请自行寻找
修改前的自动部署命令
1 | hexo clean && hexo g |
修改后的自动部署命令
1 | /www/server/nodejs/v18.18.2/lib/node_modules/hexo-cli/bin/hexo clean && /www/server/nodejs/v18.18.2/lib/node_modules/hexo-cli/bin/hexo g |
有一键脚本吗
没有,有时间我或许会试着写一个,但脚本里绝对不会提供 环境 和 依赖 的配置
有 Docker 版本吗
- 标题: 在本地部署 “hexo后端” - Qexo
- 链接: https://blog.iloli.love/archives/33773f16/
- 版权声明: CC BY-NC-ND 4.0