Files
djangoadmin-wiki/DjangoAdmin_Tornado_EleVue/zh/volume1/backend.md
T
2026-09-16 10:11:44 +08:00

340 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 后端启动
本章节介绍如何将后端项目从官网下载到本地并成功启动运行。后端基于 `Python` + `Tornado` 框架,采用分层架构设计(Handler 层 → Service 层 → Repository 层 → Model 层)。后端要求 Python 3.12+ 版本。
:::tip 温馨提示
启动后端前,请确保已完成 [环境准备](/zh/volume1/environment) 章节中的所有软件安装。
:::
## 获取源码
前往 [官方网站](https://www.djangoadmin.cn) 购买授权后,按以下步骤获取源码:
```
1. 登录官方网站,进入「个人中心」→「我的订单」页面。
2. 在订单列表中找到已购买的授权订单,点击「下载」按钮。
3. 下载的压缩包包含完整的前后端源码、数据库脚本及部署配置文件。
4. 将压缩包解压到本地开发目录(如 E:\Projects\ 或 ~/Projects/)。
```
```bash
# 进入项目根目录(以实际解压路径为准)
cd DjangoAdmin_Tornado_EleVue
```
:::tip 温馨提示
1. 源码包请务必从官方网站订单中心下载,确保获取的是正版授权的最新版本。
2. 授权有效期内可无限次下载最新版本,版本更新后可重新下载获取最新源码。
3. 解压后请先阅读根目录下的 `README.md` 和 `CHANGELOG.md` 了解版本更新内容。
:::
项目目录结构如下:
```
├── app.py # 启动入口(__main__)
├── src/ # 后端源码
│ ├── app.py # 应用工厂(create_app)
│ ├── bootstrap.py # 启动引导(信号处理、优雅关闭)
│ ├── config/ # 配置模块
│ ├── core/ # 核心基类
│ ├── common/ # 公共模块
│ ├── modules/ # 业务模块
│ ├── api/v1/ # 路由定义
│ └── extensions/ # 扩展注册(sqlalchemy/redis)
├── ui/ # 前端源码(Vue3 + Element Plus)
├── scripts/ # 脚本工具(数据库初始化、数据迁移等)
├── document/ # 数据库脚本
├── tests/ # 测试代码
├── .env.example # 环境变量示例文件
├── pyproject.toml # Poetry 依赖配置
├── poetry.lock # Poetry 依赖锁定
├── Dockerfile # Docker 镜像构建
├── docker-compose.yml # Docker 编排文件
└── Makefile # 常用命令集合
```
## 安装依赖
进入项目根目录,使用 `Poetry` 安装后端依赖包:
```bash
# 安装 Poetry(如果尚未安装)
pip install poetry
# 安装项目依赖
poetry install
```
:::tip 温馨提示
如果网络较慢,可先配置 pip 镜像源(参见 [环境准备](/zh/volume1/environment)),或使用 Poetry 镜像:
```bash
poetry config repositories.mirror https://mirrors.aliyun.com/pypi/simple/
```
:::
+ 验证依赖安装
```bash
# 检查 Tornado 是否安装成功
poetry run python -c "import tornado; print(tornado.version)"
6.4.2
# 检查 SQLAlchemy 是否安装成功
poetry run python -c "import sqlalchemy; print(sqlalchemy.__version__)"
2.0.51
```
:::tip 温馨提示
依赖安装完成后,如果上述命令输出版本号,说明核心依赖已正确安装。
:::
## 配置环境变量
项目通过 `.env` 文件管理所有配置参数。首次使用需要从示例文件复制并修改:
```bash
# 复制环境变量示例文件
cp .env.example .env # Linux / macOS
copy .env.example .env # Windows CMD
```
+ 编辑 `.env` 文件
使用文本编辑器打开 `.env` 文件,修改以下关键配置:
```bash
# ============================================================
# 基础配置
# ============================================================
TORNADO_NAME=Tornado+EleVue旗舰版
TORNADO_VERSION=v3.0.0
TORNADO_HOST=127.0.0.1
TORNADO_PORT=8041
TORNADO_ENV=development
TORNADO_DEBUG=True
# ============================================================
# 数据库配置(根据实际情况修改)
# ============================================================
DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=djangoadmin.tornado.elevue
DB_USERNAME=root
DB_PASSWORD=your_mysql_password # 修改为真实密码
DB_PREFIX=tornado_
# ============================================================
# Redis 缓存配置(根据实际情况修改)
# ============================================================
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password # 修改为真实密码
REDIS_AUTH=True
# ============================================================
# JWT 令牌配置(必填项)
# ============================================================
# 生成方式:python -c "import secrets; print(secrets.token_urlsafe(48))"
JWT_SECRET=your_jwt_secret_key_at_least_32_bytes
JWT_EXPIRE_MINUTES=20
```
:::danger 重要提示
1. `JWT_SECRET` 是 JWT 令牌的签名密钥,**必须设置**且至少 32 字节。留空或过弱会导致应用拒绝启动(fail-close)。可使用以下命令生成:
```bash
python -c "import secrets; print(secrets.token_urlsafe(48))"
```
2. `DB_PASSWORD` 和 `REDIS_PASSWORD` 请填写真实的服务密码。
3. 生产环境务必设置 `TORNADO_DEBUG=False`,避免泄漏内部错误信息。
:::
## 初始化数据库
首次启动前,需要初始化数据库结构和种子数据。
### 方式一:手动导入(推荐)
```bash
# 1. 登录 MySQL,创建数据库
mysql -uroot -p
CREATE DATABASE `djangoadmin.tornado.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# 2. 导入数据库脚本
mysql -uroot -p djangoadmin.tornado.elevue < document/djangoadmin.tornado.elevue.sql
```
### 方式二:Alembic 迁移(备选)
```bash
# 自动建表
poetry run alembic upgrade head
# 导入业务字典种子数据
python scripts/seed_dict.py
```
:::tip 温馨提示
项目支持 MySQL、PostgreSQL、SQL Server、SQLite、Oracle 等数据库。通过 `.env` 中的 `DB_DRIVER` 切换驱动(默认 `mysql`)。非 MySQL 数据库请使用 Alembic + seed 脚本初始化。详细的多数据库初始化步骤请参考 [数据库初始化](/zh/volume1/database) 章节。
:::
初始化完成后,数据库中包含以下默认数据:
```
管理员账号:admin / 123456(超级管理员,ID=1,跳过权限校验)
默认角色:超级管理员角色
默认菜单:系统管理、内容管理、监控管理等菜单及权限节点
数据字典:系统内置字典数据
系统配置:系统默认配置项
```
## 启动后端服务
一切准备就绪后,执行以下命令启动后端服务:
```bash
# 使用 Poetry 启动(推荐)
poetry run python app.py --port=8041
# 或直接 python 启动
python app.py --port=8041
```
:::tip 启动入口说明
启动流程:`app.py`(__main__) → `src/bootstrap.py:main()` → `src/app.py:create_app()`
`bootstrap.py` 负责解析命令行参数(`--port`)、创建应用、注册 SIGINT/SIGTERM 信号实现优雅关闭。
`create_app()` 是应用工厂函数(位于 `src/app.py`),负责组装路由、配置模板/静态目录、初始化扩展。
:::
启动成功后,终端将输出类似以下信息:
```
____ _ _
| _ \ _ _ __ _ _ __ ___ (_) _ __ __ _ _ __ __| |
| | | || | | | / _` || '__| / __|| || '_ \ / _` || '__| / _` |
| |_| || |_| || (_| || | | (__ | || |_) || (_| || | | (_| |
|____/ \__,_| \__,_||_| \___||_|| .__/ \__,_||_| \__,_|
|_|
Tornado + EleVue 企业级管理框架
[INFO] 服务启动成功 → http://127.0.0.1:8041
```
:::tip 默认端口
后端服务默认监听端口为 `8041`,可通过 `--port` 参数或 `.env` 文件中的 `TORNADO_PORT` 参数修改。
:::
## 验证后端服务
+ 测试接口连通性
使用 `curl` 或浏览器访问健康检查接口:
```bash
# 测试服务是否正常响应
curl http://127.0.0.1:8041/api/v1/health
```
返回以下 JSON 即表示服务正常运行:
```json
{
"code": 0,
"data": {
"status": "ok"
},
"msg": "操作成功",
"ok": true
}
```
+ 测试验证码接口
```bash
curl http://127.0.0.1:8041/api/v1/captcha
```
返回类似以下 JSON:
```json
{
"code": 0,
"data": {
"captcha": "data:image/png;base64,...",
"key": "sl1dhi-ejqV2PWH8tYDE1pVNaRiccsrQ"
},
"msg": "操作成功",
"ok": true
}
```
+ 查看日志输出
在终端中观察后端日志输出,确认无异常错误信息。如果出现连接数据库或 `Redis` 失败的错误,请检查 `.env` 配置和相关服务是否正常运行。
## Makefile 常用命令
项目根目录的 `Makefile` 提供了常用命令的快捷方式。
:::tip Windows 用户注意
`make` 命令是 Linux / macOS 系统自带的构建工具,Windows 系统默认不包含。Windows 用户可直接执行表格中"对应命令"列所示的原始命令。
:::
| 命令 | 对应命令 | 说明 |
|:----|:----|:----|
| `make install` | `poetry install` | 安装依赖 |
| `make dev` | `poetry run python app.py --port=8041` | 启动开发服务 |
| `make test` | `poetry run pytest` | 运行全部测试 |
| `make test-unit` | `poetry run pytest tests/unit` | 运行单元测试 |
| `make lint` | `poetry run ruff check src tests` | 代码规范检查 |
| `make seed-dict` | `python scripts/seed_dict.py` | 初始化业务字典数据 |
## 常见问题
+ 端口被占用
如果启动时报错 `Address already in use`,说明端口 `8041` 已被其他程序占用:
```bash
# Windows 查看端口占用
netstat -ano | findstr 8041
# Linux / macOS 查看端口占用
lsof -i :8041
```
解决方式:终止占用进程,或使用 `--port` 参数指定其他端口。
+ JWT_SECRET 未配置
如果启动时报错 `JWT_SECRET` 相关错误,说明未配置 JWT 签名密钥或密钥过弱。请在 `.env` 文件中设置:
```bash
JWT_SECRET=your_generated_secret_key_here_at_least_32_bytes
```
生成方式:
```bash
python -c "import secrets; print(secrets.token_urlsafe(48))"
```
+ 数据库连接失败
如果启动时报错数据库连接失败,请检查:
```
1. MySQL 服务是否已启动
2. .env 中的 DB_HOST、DB_PORT、DB_USERNAME、DB_PASSWORD 是否正确
3. 防火墙是否放行了数据库端口
```
## 总结
本章节介绍了后端项目的完整启动流程:拉取代码 → 安装依赖 → 配置环境变量 → 初始化数据库 → 启动服务 → 验证接口。通过以上步骤,你已经成功将后端服务运行在本地 `8041` 端口。下一步可以进入 [前端启动](/zh/volume1/frontend) 章节,启动前端项目并登录系统。