原文地址:https://blog.iloli.love/archives/33773f16/
本文图例使用腾讯云lighthouse搭建(其他服务器也没问题)
在阅读本文之前,你需要做的事:已经在 服务器/本地 部署好 hexo 及其相关依赖 ,还有python3.x及对应版本的pip 以及 git / curl 等命令
本文应用场景为通过本地部署的 Qexo 控制本地部署的 hexo ,为了轻量化,数据库使用SQlite
本文假设运行 python 的命令为
python3
,运行 pip 的命令为pip3
,Qexo 目录为 /data/qexo
接下来我们开始部署 Qexo
下载所需文件
运行命令
如果是境内鸡则运行:
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
如果是境外鸡则运行:
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包
cd /data/qexo && pip3 install -r requirements_withoutmsyql.txt
部分运行结果如图所示
如果这一步遇到报错,可能是因为你的python版本不合适,或者网络问题,或者镜像源问题,或者各种奇奇怪怪的问题;总之请自行解决
另附一份可能的报错以及解决方案:
对于如下的报错,可以将上面的命令改为下面这个
cd /data/qexo && pip3 install -r requirements_withoutmsyql.txt --ignore-installed PyYAML
运行 Qexo
接下来运行命令
python3 manage.py makemigrations && python3 manage.py migrate
运行结果如图,看到 ERROR: Provider获取失败, 跳过(functions.py.<module>[line:55])
不用理会,是正常现象
如果没有报错的话就可以继续运行如下命令
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 子配置文件
[program:qexo]
command=python3 manage.py runserver 0.0.0.0:8000 --noreload
directory=/data/qexo/
autorestart=true
startsecs=3
startretries=3
stdout_logfile=/www/server/panel/plugin/supervisor/log/qexo.out.log
stderr_logfile=/www/server/panel/plugin/supervisor/log/qexo.err.log
stdout_logfile_maxbytes=2MB
stderr_logfile_maxbytes=2MB
user=root
priority=999
numprocs=1
process_name=%(program_name)s_%(process_num)02d
FAQ
如果我想通过域名访问 Qexo 应该怎么做
通过 Nginx 反代 http://127.0.0.1:8000
如果使用CDN,并且CDN支持自定义回源端口,则可以在CDN侧设置 使用 HTTP 回源 8000 端口
如果我的服务器上有 python3.x 但是没有对应的 pip 怎么办
试试运行如下命令
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
我也是这个情况,可以通过命令行部署,但是不能通过 Qexo 自动部署,不知道为什么,在好几台服务器上试了都是这样
有一键脚本吗
没有,有时间我或许会试着写一个,但脚本里绝对不会提供 环境 和 依赖 的配置
有 Docker 版本吗
没有,具体理由见 https://github.com/miaowmint/Qexo-docker#readme