# 部署环境评估 > 记录 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 内存。