外观
部署拓扑
当前生产拓扑是单 ECS 入口、单 active backend upstream、RDS 内网数据库和外部 AI 服务组合。公网流量先进入 Nginx,再按路径分发到静态资源或 fitdoc-core。
拓扑图
外部访问App / Browser
ECS 入口安全组 / UFW
统一反向代理Nginx :80/:443
↴
官网与文档站/ 与 /doc-center/
后端 upstreamfitdoc-core :8001
静态资源/uploads /static/videos
↴
持久化与 AIRDS / LLM / Embedding
代码托管Gitea :3000
这张图表达当前生产流量的主拓扑。Gitea 与业务 App 不在同一条请求链路中,端口和监听范围在下方服务表中核对。
服务与端口
| 端口 | 服务 | 监听范围 | 当前职责 |
|---|---|---|---|
22 | SSH | 公网 | 运维登录。 |
80 | Nginx HTTP | 公网 | 官网、静态资源、API 转发;域名请求可进入 HTTPS 路径。 |
443 | Nginx HTTPS | 公网 | 域名 HTTPS 访问。 |
3000 | Gitea | 公网 | 私有代码托管。 |
8001 | fitdoc-core | 127.0.0.1 | 当前唯一生产 FastAPI upstream。 |
5432 | PostgreSQL | RDS 内网 | FitDoc 业务库与 Gitea 库。 |
生产 ECS 当前没有活动的 8000 或 8002 后端监听。历史 fitdoc-rag.service 和旧 fitdoc.service 只保留在备份与审计语境中。
Nginx 路由边界
| 路径 | 当前处理方式 | 文件或 upstream |
|---|---|---|
/ | 静态官网入口,找不到具体资源时回落到 home.html。 | /opt/fitdoc/frontend |
/uploads/ | 用户上传资源静态映射。 | /opt/fitdoc/backend/uploads/ |
/static/videos/ | Demo 或运动视频资源静态映射,带缓存与跨域响应头。 | /var/www/fitdoc/static/videos/ |
/api | 后端 API。 | http://127.0.0.1:8001 |
/health | 后端健康检查。 | http://127.0.0.1:8001 |
/docs | FastAPI 文档面代理。 | http://127.0.0.1:8001 |
/doc-center/ | VitePress 文档中心静态站。 | /opt/fitdoc/frontend/doc-center/ |
/openapi.json | OpenAPI schema。 | http://127.0.0.1:8001 |
/redoc | FastAPI ReDoc。 | http://127.0.0.1:8001 |
docs_site 的 VitePress 构建配置使用 base: '/doc-center/'。该路径不命中当前生产 Nginx 的 /docs 后端代理规则,可作为官网静态资源直接发布;/docs 继续保留给 FastAPI 文档面。
Systemd 后端服务
| 项目 | 当前值 |
|---|---|
| Unit | fitdoc-core.service |
| 运行用户 | haien |
| 工作目录 | /opt/fitdoc/backend |
| 环境文件 | /opt/fitdoc/backend/.env |
| 启动命令 | uvicorn app.main:app --host 127.0.0.1 --port 8001 --workers 3 |
| 日志入口 | journalctl -u fitdoc-core |
| 自动启动 | enabled |
外部依赖
| 依赖 | 用途 | 运行边界 |
|---|---|---|
| RDS PostgreSQL | 用户、聊天、运动、处方、评估、RAG 知识表。 | 通过 DATABASE_URL 注入,文档不登记连接串。 |
| DashScope | embedding 与 rerank。 | 通过后端环境变量注入。 |
| Moonshot/Kimi 兼容接口 | 当前生产 LLM provider。 | 通过 LLM_PROVIDER、LLM_MODEL 与密钥变量控制。 |
| Spark | 保留的可用 LLM provider。 | WebSocket client 与模型配置仍在代码中。 |
| 阿里云短信 | 验证码发送。 | 由短信相关环境变量控制。 |
来源锚点
docs/新服务器运维手册.md- 生产 ECS 只读命令:
systemctl show fitdoc-core、ss -tlnp、grep /etc/nginx/sites-enabled/fitdoc apps/backend_service/app/bootstrap.pydocs_site/.vitepress/config.ts