前言
Qexo 是一个快速、强大、美观的在线静态博客编辑器,使用的 Django 和 Bootstrap 框架开发,使用 GPL3.0 开源协议,支持Vercel 部署和本地部署。
今天我们使用 docker 来部署 Qexo 来搭建 hexo 博客的后台。如果您需要使用 vercel 部署或者本地部署,可参阅官方文档。
官方文档中,使用本地部署(服务器部署)的方案,其实是开发环境下的。
1 2 3 4
| pip3 install -r requirements.txt python3 manage.py makemigrations python3 manage.py migrate python3 manage.py runserver 0.0.0.0:8000 --noreload
|
假如说服务器宕机了,那么这个进程就会停止了,再次重启服务器,这个管理后台就打不开了,因为这个进程已经被杀死了。通过查阅 Django 官方文档,使用的是 WSGI 与 Nginx 服务器的方式部署,我觉得操作起来非常麻烦,WSGI 设置为开机自启才能保证网站在服务器重启之后自动运行。最后,我选择了使用 Docker 部署 Qexo。
快速开始
1 2 3 4
| mkdir /www/qexo -p cd /www/qexo mkdir build cd build
|
新建一个 qexo
文件夹,用于存放 qexo 的应用程序以及构建镜像所需的配置文件(build 文件夹),先进入 build 文件夹,新增三个文件,分别是 Dockerfile
,configs.py
,run.sh
Dockerfile
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
| FROM python:3.11.3-alpine
LABEL maintainer="codepzj"
RUN pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple/
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ apk --no-cache add tzdata && \ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ apk --no-cache del tzdata && \ apk --no-cache add git && \ mkdir /app
WORKDIR /app
RUN git clone -b dev https://github.com/Qexo/Qexo.git .
RUN pip install --upgrade pip RUN pip install -r requirements.txt
COPY . /app/ RUN chmod +x /app/run.sh
EXPOSE 8000
VOLUME ["/app/db", "/app/data"]
ENTRYPOINT ["/bin/sh", "/app/run.sh"]
|
configs.py
1 2 3 4 5 6 7 8 9 10
| import pymysql import os
DOMAINS = "*" DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join('/app/db', 'db.sqlite3'), } }
|
我们这里使用 Sqlite
数据库进行部署,这是一个文件数据库,主要是方便,这只是一个管理后台,并不需要过多的请求,所以直接使用文件数据库即可。
run.sh
1 2 3 4 5
| #!/bin/bash
python3 manage.py makemigrations python3 manage.py migrate python3 manage.py runserver 0.0.0.0:8000 --noreload
|
打包镜像
使用这条命令打包 qexo 镜像,同时我把镜像上传到了 github,直接使用即可,不需要担心任何问题,有需要的自取。
docker-compose.yaml 启动 qexo 容器
在 www/qexo
下新建一个 docker-compose.yaml
文件
1 2 3 4 5 6 7 8 9 10 11 12
| version: "3.9" services: qexo: image: "codepzj/qexo:1.0" volumes: - "./data/blog:/app/data" - "./data/qexo/db:/app/db" - "/etc/localtime:/etc/localtime:ro" - "/etc/timezone:/etc/timezone:ro" ports: - "8000:8000" container_name: qexo
|
在 www/qexo
目录下执行 docker-compose up -d
即可运行 qexo 容器
服务器的话可以使用 ip 地址+端口号进行访问,也可以通过 Nginx 反代使用域名访问 Qexo 管理后台。
效果预览
本地部署
2024/12/16
更新
因为有小伙伴私信我,问这个本地该如何部署,很简单,直接按照这个视频做即可,qexo 本地部署教学视频,每次操作完就会在挂载目录生成新的文章,不过需要在服务器本地通过 pnpm run build 重新生成静态文件,放置到 nginx 对应的网站目录当中。