Files
skelet/docs/deployment/environment-assessment.md

3.1 KiB
Raw Permalink Blame History

部署环境评估

记录 2026-07-06 对 Lightsail 实例的只读核查结果,以及 Skelet 第一版部署方式建议。

一、结论

当前 Lightsail 实例可以作为 Skelet 第一版的 2 核 2G VPS 使用,但运行环境尚未满足项目要求。

建议第一版采用系统环境部署:

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 第一版是内容目录和评测站,运行结构简单。系统环境部署更贴近当前项目边界,组件少,故障面更小:

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 内存。