Add deployment environment assessment
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# 部署环境评估
|
||||
|
||||
> 记录 2026-07-06 对 Lightsail 实例的只读核查结果,以及 Skelet 第一版部署方式建议。
|
||||
|
||||
## 一、结论
|
||||
|
||||
当前 Lightsail 实例可以作为 Skelet 第一版的 2 核 2G VPS 使用,但运行环境尚未满足项目要求。
|
||||
|
||||
建议第一版采用系统环境部署:
|
||||
|
||||
```text
|
||||
Ubuntu 22.04
|
||||
Nginx 80/443
|
||||
Gunicorn systemd service
|
||||
Python 3.12 venv
|
||||
Django / Wagtail
|
||||
SQLite db.sqlite3 + WAL
|
||||
local media/
|
||||
daily backup
|
||||
```
|
||||
|
||||
暂不建议把 Docker 作为第一版主部署路径。
|
||||
|
||||
## 二、当前实例核查结果
|
||||
|
||||
| 检查项 | 当前状态 | 判断 |
|
||||
| --- | --- | --- |
|
||||
| 实例规格 | AWS metadata 显示 `t3.small`;2 vCPU,约 1.9 GiB 内存 | 符合 2 核 2G 目标 |
|
||||
| 系统 | Ubuntu 22.04.5 LTS | 可用 |
|
||||
| 磁盘 | 根分区约 60G,已用约 4G | 足够 |
|
||||
| Python | 只有 Python 3.10.12;未安装 Python 3.12 | 不符合 |
|
||||
| SQLite | Python 内置 SQLite 3.37.2,JSON1 可用;未安装 `sqlite3` CLI | 部分符合 |
|
||||
| Nginx | 未安装 | 不符合 |
|
||||
| Gunicorn | 未安装 | 不符合 |
|
||||
| 80/443 | 当前无监听服务 | 符合部署前提 |
|
||||
| 防火墙 | `ufw` inactive | 后续需按部署策略配置 |
|
||||
| SSH 用户 | `ubuntu` 可登录;`deploy` 公钥登录失败 | 需创建或配置 `deploy` 用户 |
|
||||
| Swap | 未配置 swap | 建议补 1G swap |
|
||||
| 现有服务 | Docker 已运行 `sub2api`、Postgres、Redis、shadowsocks;占用 8080/8388 | 非干净环境,但不阻止 Nginx 80/443 部署 |
|
||||
|
||||
## 三、为什么第一版建议用系统环境
|
||||
|
||||
项目当前文档已明确第一版部署目标是单 VPS、Gunicorn + Nginx、SQLite,并且不把 Docker 作为必需项。
|
||||
|
||||
Skelet 第一版是内容目录和评测站,运行结构简单。系统环境部署更贴近当前项目边界,组件少,故障面更小:
|
||||
|
||||
```text
|
||||
Nginx -> Gunicorn -> Django/Wagtail -> SQLite
|
||||
```
|
||||
|
||||
SQLite 放进 Docker 后,需要额外处理 volume、文件权限、WAL 文件、备份一致性和恢复路径。对当前 MVP 来说,这些复杂度没有带来足够收益。
|
||||
|
||||
当前实例上已经运行多个 Docker 容器,包括 Postgres 和 Redis。在 2G 内存机器上继续把 Skelet 容器化,会让资源边界和故障排查更复杂。第一版更重要的是尽快跑通 Wagtail、内容录入、SEO 验证和备份。
|
||||
|
||||
## 四、Docker 可作为后续选项
|
||||
|
||||
后续出现以下条件时,再重新评估 Docker:
|
||||
|
||||
- 迁移 PostgreSQL。
|
||||
- 同机部署多个隔离服务。
|
||||
- 需要 staging / production 环境一致性。
|
||||
- 引入 Redis、后台 worker、任务队列等组件。
|
||||
- 需要频繁迁移到其他机器或平台。
|
||||
|
||||
在这些条件出现前,Docker 不应成为第一版部署的默认前提。
|
||||
|
||||
## 五、上线前待补事项
|
||||
|
||||
1. 创建并配置 `deploy` 用户 SSH 登录。
|
||||
2. 安装 Python 3.12。
|
||||
3. 安装 `sqlite3` CLI、Nginx 和必要系统依赖。
|
||||
4. T-001 初始化项目后,创建 Python venv 并安装 Wagtail / Django 依赖。
|
||||
5. 配置 Gunicorn systemd service。
|
||||
6. 配置 Nginx 反向代理和静态 / 媒体文件服务。
|
||||
7. 启用 SQLite WAL。
|
||||
8. 配置 `db.sqlite3` 和 `media/` 的每日备份。
|
||||
9. 评估现有 Docker 服务是否继续保留,避免与 Skelet 争抢 2G 内存。
|
||||
Reference in New Issue
Block a user