一直以来hexo都是我自己比较喜欢的一个静态博客,有很多很漂亮的主题。但是对于静态博客来说,很不好的一点是不能直接后台管理,直接上传文章这类。刚好最近看到了一个Qexo静态博客编辑器。地址:https://oplog.cn/qexo/start.html现在重新改一改我的网站tuhouni.cn,已经放着1年多吃灰了。

一:我的环境

本地虚拟机搭建hexo、仓库为github、Qexo在本地虚拟机上(为什么不在云服务上,个人习惯)、图床(云服务器)

二:环境搭建

环境:ubuntu20.0.4

首先安装npm

apt update

apt install npm

此时node版本太低,需要升级

安装nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

生效

source ~/.bashrc

安装指定node版本

nvm install 24.0.0

安装宝塔:wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ssl251104

本文章分为三部分:hexo搭建、主题优化、qexo搭建

1、hexo搭建

安装cnpm管理器

npm install -g cnpm --registry=http://registry.npm.taobao.org

安装hexo框架

cnpm install -g hexo-cli

初始化

hexo init blog

进入项目启动

1
2
3
cd blog
cnpm install
hexo s

image-20260202093656488

出现这个报错:升级npm

2、主题优化

主题下载 git clone -b dev https://github.com/everfu/hexo-theme-solitude.git themes/solitude

修改主题: theme: solitude

安装依赖:npm i hexo-renderer-pug

3、Qexo搭建

官网:https://oplog.cn/qexo/

我选择的是源码搭建,在宝塔面板上搭建,在你喜欢的位置把文件上传上

image-20260209215908587

创建一个configs.py,根据自己的数据库创建写对应的连接方式,我用的是mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pymysql
pymysql.install_as_MySQLdb()
DOMAINS = ['127.0.0.1','0.0.0.0']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxx',
'USER': 'xxx',
'PASSWORD': 'xxxx',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
"init_command": "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}

image-20260209220052738

连接数据库有安装依赖python和依赖包

1
2
3
4
5
apt install python3-pip
pip3 install -r requirements.txt
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000 --noreload

登录后进行设置,我的是虚拟机本机,选择本地,路径根据自己的地址设置。自动部署的位置需要修改

image-20260209220223932

此时保存后进行发文测试,显示成功,但是在public文章中没有对应的文章,查看日志中发现报错

image-20260209220842173

提示找不到hexo,直接使用路径调用

image-20260209225402729

文件路径/home/Qexo-3.3.1/hexoweb/libs/platforms/providers/local.py

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
def build(self):
if not self.auto:
return False
# 固定self.auto
self.auto = [
["/root/.nvm/versions/node/v18.0.0/bin/hexo", "clean"],
["/root/.nvm/versions/node/v18.0.0/bin/hexo", "g"]
]
logging.info("进行自动部署...")

last_proc = None
if os.name == 'nt':
exec_cmd = "powershell \"cd {}; {}\"".format(self.path, self.auto)
else:
# exec_cmd = "cd {} && {}".format(self.path, self.auto)
for cmd in self.auto:
logging.info("执行命令: %s", cmd)
last_proc = subprocess.Popen(
cmd,
cwd=self.path,
)
last_proc.wait() # 保证顺序执行
return last_proc
# logging.info(exec_cmd)
# p = subprocess.Popen(exec_cmd, shell=True)
# return p

修改build函数就行

image-20260209231444331

此时已经完成。根据遇到的问题,很多时候会出现权限问题,修改文件夹权限也能解决

4、配置图床

image-20260202142606153

图床配置后就可以直接在qexo上面上传图片了。

image-20260212150230492

image-20260212150249894

为什么我没有用图床,ikuai的https懒得弄了。所以还是直接使用的github的静态