60 lines
3.3 KiB
Markdown
60 lines
3.3 KiB
Markdown
# 技术栈(Tech Stack)
|
||
|
||
> “用什么”的统一速查表。选型与理由在此集中维护;“怎么把它们搭起来”见 [架构设计](04-architecture.md)。
|
||
|
||
## 一、技术栈一览
|
||
|
||
| 维度 | 选型 | 状态 | 理由 / 说明 |
|
||
| --- | --- | --- | --- |
|
||
| CMS / Web 框架 | Wagtail + Django | 已定 | 内容模型、后台、页面、SEO、搜索和后续扩展都适合目录评测站。 |
|
||
| Python | Python 3.12 | 已定 | Wagtail 当前支持 Python 3.12;部署环境更稳。 |
|
||
| 数据库 | SQLite with JSON1 | 已定 | 开发和第一版上线成本低;MVP 写入少。 |
|
||
| 后续数据库 | PostgreSQL | 条件触发 | 出现用户写入、高并发、后台多人编辑、锁冲突或会员功能后迁移。 |
|
||
| 前端模板 | Django Templates / Wagtail Templates | 已定 | 第一版以内容站为主,避免引入前后端分离复杂度。 |
|
||
| UI 样式方案 | 普通 CSS,必要时少量组件化模板 | 已定 | 减少构建链路;后续可再引入 Tailwind。 |
|
||
| 搜索 | Wagtail / 数据库搜索 | 已定 | MVP 不上 Elasticsearch。 |
|
||
| 鉴权方式 | Wagtail Admin Session | 已定 | 第一版只有后台编辑账号。 |
|
||
| 媒体存储 | 本地 media 目录 | 已定 | 2 核 2G VPS 第一版足够;后续可迁移 S3/R2/OSS。 |
|
||
| 部署方式 | 单 VPS,Gunicorn + Nginx | 待实现 | 面向 2 核 2G VPS;先不引入 Docker 作为必需项。 |
|
||
| 测试 | Django test / pytest 待定 | 待定 | T-001 初始化后以项目实际生成结构为准。 |
|
||
|
||
## 二、决策记录与演进
|
||
|
||
- 当前选择 **Wagtail**,因为项目核心是内容管理、分类、筛选、详情页和 SEO,不是复杂 SaaS 流程。
|
||
- 当前选择 **SQLite**,因为第一版以公开读为主,后台只有少数编辑者写入。
|
||
- 当前选择 **Python 3.12**,因为比追最新 Python 更稳,且兼容当前 Wagtail。
|
||
- 当前不引入 **前后端分离 React**,避免第一版增加 API、构建和部署复杂度。
|
||
- 当前不引入 **Elasticsearch**,避免在 2 核 2G VPS 上增加运维负担。
|
||
- 当前不引入 **会员/支付系统**,先积累可信内容和 SEO 流量。
|
||
|
||
## 三、构建与运行命令
|
||
|
||
生产代码尚未初始化。完成 `T-001` 后必须把本节替换为真实命令。
|
||
|
||
目标命令形态:
|
||
|
||
| 用途 | 命令 |
|
||
| --- | --- |
|
||
| 创建虚拟环境 | `python -m venv .venv` |
|
||
| 安装依赖 | `.\.venv\Scripts\python -m pip install -r requirements.txt` |
|
||
| 数据库迁移 | `.\.venv\Scripts\python manage.py migrate` |
|
||
| 创建管理员 | `.\.venv\Scripts\python manage.py createsuperuser` |
|
||
| 本地开发 | `.\.venv\Scripts\python manage.py runserver` |
|
||
| 测试 | `.\.venv\Scripts\python manage.py test` |
|
||
|
||
## 四、SQLite 上线纪律
|
||
|
||
- 上线前验证 SQLite 支持 JSON1。
|
||
- 上线前启用 WAL 模式。
|
||
- 每天备份 `db.sqlite3` 和 `media/`。
|
||
- Gunicorn worker 控制在 1-2 个。
|
||
- 不做高频写入功能。
|
||
- 出现 `database is locked`、用户提交、评论、收藏、会员、多人后台编辑时,优先迁移 PostgreSQL。
|
||
|
||
## 五、依赖纪律
|
||
|
||
- 新增第三方依赖前,先说明用途、替代方案和维护成本。
|
||
- 不确定的技术选型先更新本文,再进入代码。
|
||
- 不允许同一职责并存两套框架或两套状态管理方案。
|
||
- 不要为了前端效果提前引入复杂构建链路。
|