# ALiYunManager 项目上下文 (AI可读) > 本文档供 AI 助手在新会话中快速理解项目部署环境和架构,避免做出与现有环境冲突的操作。 --- ## 一、服务器信息 | 项目 | 值 | |------|-----| | 公网 IP | `8.136.137.59` | | 根域名 | `dxz99wyr.cn` | | 操作系统 | Ubuntu (5.15.0-174-generic) | | SSH 连接命令 | `ssh -i "D:\003_Project\小程序连接.pem" root@8.136.137.59` | | SSH 密钥路径 | `D:\003_Project\小程序连接.pem` | | 服务器项目路径 | `/opt/ALiYunManager` | --- ## 二、子域名规划 | 子域名 | 用途 | 类型 | |--------|------|------| | `me.dxz99wyr.cn` | 个人简历网站 | 前端 | | `miniapp.dxz99wyr.cn` | 小程序网站 | 前端 | | `api-resume.dxz99wyr.cn` | 个人简历后台 API | 后端 | | `api-miniapp.dxz99wyr.cn` | 小程序后台 API | 后端 | > 以上 4 个子域名 DNS A 记录均指向 `8.136.137.59`。 --- ## 三、端口分配(关键:防止冲突) ### 对外网开放的端口 | 端口 | 用途 | 备注 | |------|------|------| | `22` | SSH | 必须保持 | | `80` | HTTP 入口 | 由 **beian-nginx**(现有)占用 | | `443` | HTTPS 入口 | 由 **beian-nginx**(现有)占用 | ### 内部端口(不对外网) | 端口 | 用途 | 备注 | |------|------|------| | `8080` | main-nginx HTTP | Docker 容器内 80 → 宿主机 8080 | | `8443` | main-nginx HTTPS | Docker 容器内 443 → 宿主机 8443 | | `3000` | 小程序后端 | `quanyixiaozhushou-app`,仅本地回环访问 | ### 端口冲突规则 - **绝对不要占用 80/443** — 已被 beian-nginx 使用,新增服务必须挂到 main-nginx 后面(通过 Docker 网络内部 80 通信) - **绝对不要占用 8080** — 已被 main-nginx 映射使用 - **绝对不要暴露 3000 到外网** — 小程序后端已关闭外网访问,仅走本地回环 - 新增服务容器内部一律使用 `80` 端口,通过 Docker 网络互通,**不要额外映射宿主机端口** --- ## 四、现有 Nginx 链路(两层代理) ``` 外网请求 │ ▼ ┌─────────────────────────────────────┐ │ beian-nginx (宿主机 :80/:443) │ ← 第1层:现有入口,已在运行 │ 容器名: beian-nginx │ │ 所属网络: beian-docker_default │ │ │ │ 目前配置: │ │ ✅ api-miniapp.dxz99wyr.cn → :8080 │ 4个域名中只有这个配了中转 │ ❌ me.dxz99wyr.cn │ 尚未配置 │ ❌ miniapp.dxz99wyr.cn │ 尚未配置 │ ❌ api-resume.dxz99wyr.cn │ 尚未配置 │ ✅ /quanyi → 静态页面 (原有服务) │ └──────────────┬──────────────────────┘ │ 中转请求到 172.19.0.1:8080 (Docker网关=宿主机) ▼ ┌─────────────────────────────────────┐ │ main-nginx (Docker :8080/:8443) │ ← 第2层:新建,按域名分发 │ 容器名: main-nginx │ │ 所属网络: aliyun-app-network │ │ │ │ 路由表: │ │ me.dxz99wyr.cn → resume-web:80 │ │ miniapp.dxz99wyr.cn → miniapp-web:80 │ │ api-resume.dxz99wyr.cn → resume-api:80 │ │ api-miniapp.dxz99wyr.cn → host.docker.internal:3000 │ └──────────────┬──────────────────────┘ │ Docker 内部网络 ▼ ┌──────────┼──────────┬──────────┐ │ │ │ │ resume-web miniapp-web resume-api miniapp-api (占位) (占位) (占位) (→宿主机:3000) ``` ### 关键理解 - **beian-nginx 是真正的入口**,main-nginx 只是在内部做二级分发 - **beian-nginx 配置文件位置**: `/opt/beian-docker/nginx.conf`(映射到容器内 `/etc/nginx/conf.d/default.conf`) - **修改 beian-nginx 前必须先备份**: 备份文件在 `/opt/beian-docker/nginx.conf.bak` - 重载 beian-nginx: `docker exec beian-nginx nginx -t && docker exec beian-nginx nginx -s reload` --- ## 五、Docker 容器清单 | 容器名 | 镜像 | 网络 | 端口映射 | 说明 | |--------|------|------|----------|------| | `beian-nginx` | nginx | beian-docker_default | 80:80, 443:443 | **现有,勿动基础配置** | | `main-nginx` | nginx:alpine | aliyun-app-network | 8080:80, 8443:443 | 主 Nginx,本项目管理 | | `resume-web` | nginx:alpine | aliyun-app-network | 无(内部80) | 个人简历网站(占位) | | `miniapp-web` | nginx:alpine | aliyun-app-network | 无(内部80) | 小程序网站(占位) | | `resume-api` | nginx:alpine | aliyun-app-network | 无(内部80) | 个人简历后台(占位) | | `miniapp-api` | nginx:alpine | aliyun-app-network | 无(内部80) | 小程序后台占位容器 | | `quanyixiaozhushou-app` | 自有镜像 | beian-docker_default | 3000:3000 | **现有小程序后端,勿动** | | `quanyixiaozhushou-mongo` | mongo | beian-docker_default | 27018:27017 | **现有 MongoDB,勿动** | ### Docker 网络 | 网络名 | 类型 | 用途 | |--------|------|------| | `aliyun-app-network` | bridge | 本项目所有服务容器互通 | | `beian-docker_default` | bridge | 现有 beian-nginx 及小程序后端 | > **注意**: main-nginx 通过 `extra_hosts: host.docker.internal:host-gateway` 访问宿主机端口(如 3000),不需要两个网络互通。 --- ## 六、项目文件结构 ``` ALiYunManager/ ├── .env # 环境变量(域名+端口),修改后需重启 ├── .env.example # 环境变量模板 ├── docker-compose.yml # 完整部署(main-nginx + 4个服务) ├── docker-compose.main-nginx-only.yml # 仅主 Nginx(各服务独立部署时用) ├── docker-compose.override.yml # 开发环境覆盖(自动加载) ├── deploy.sh # 一键部署脚本 ├── Makefile # 常用命令快捷方式 ├── nginx/ │ ├── nginx.conf # 主 Nginx 核心配置(一般不改) │ ├── conf.d/ │ │ ├── resume-web.conf # me.dxz99wyr.cn → resume-web:80 │ │ ├── miniapp-web.conf # miniapp.dxz99wyr.cn → miniapp-web:80 │ │ ├── resume-api.conf # api-resume.dxz99wyr.cn → resume-api:80 │ │ ├── miniapp-api.conf # api-miniapp.dxz99wyr.cn → host.docker.internal:3000 │ │ ├── ssl-template.conf # HTTPS 配置模板(按需取消注释) │ │ └── port-based-example.conf # 基于端口的备选方案模板 │ ├── ssl/ # SSL 证书目录(.gitignore 排除) │ └── logs/ # Nginx 日志目录 ├── services/ │ ├── resume-web/ # 个人简历前端 │ │ ├── html/index.html # 占位页面 → 替换为真实简历 │ │ ├── nginx.conf # 内部 Nginx 配置 │ │ ├── Dockerfile # 前端 Dockerfile │ │ └── docker-compose.yml # 独立部署配置 │ ├── miniapp-web/ # 小程序前端(同上结构) │ ├── resume-api/ # 个人简历后台 │ │ ├── nginx.conf # 内部 Nginx(当前占位) │ │ ├── Dockerfile # 模板,含 Node/Python/Go 示例 │ │ └── docker-compose.yml # 独立部署配置 │ └── miniapp-api/ # 小程序后台(同上结构) └── scripts/ ├── init-server.sh # 新服务器初始化(安装 Docker 等) ├── setup-ssl.sh # SSL 证书申请(Certbot) ├── update-service.sh # 更新单个服务 ├── backup.sh # 备份配置和证书 └── logrotate-nginx # 日志轮转配置 ``` --- ## 七、操作注意事项(AI 助手必读) ### 绝对不能做的事 1. **不要修改 beian-nginx 的基础配置**(default_server、/quanyi 路径等),只能追加新的 server 块做域名中转 2. **不要改动 `nginx/nginx.conf`**(主 Nginx 核心配置),除非明确需要调整全局参数 3. **不要将 3000、8080、8443 端口暴露到外网** 4. **不要删除或停用 beian-nginx、quanyixiaozhushou-app、quanyixiaozhushou-mongo 容器** 5. **不要在 main-nginx 容器内直接改配置**,应修改本地 `nginx/conf.d/*.conf` 文件后重载 ### 新增服务时的标准流程 1. 在 `services/` 下创建服务目录,编写 Dockerfile 和内部 nginx.conf 2. 在 `nginx/conf.d/` 下创建对应的反向代理 `.conf` 文件 3. 在 `.env` 中添加新子域名变量 4. 在 `docker-compose.yml` 中添加新服务定义 5. 在 beian-nginx 中追加对应的中转 server 块 6. 在阿里云 DNS 添加子域名 A 记录 ### 修改 beian-nginx 配置的标准流程 ```bash # 1. 备份当前配置 cp /opt/beian-docker/nginx.conf /opt/beian-docker/nginx.conf.bak.$(date +%Y%m%d) # 2. 编辑配置(在 server 块区域追加新的域名中转) vim /opt/beian-docker/nginx.conf # 3. 测试配置 docker exec beian-nginx nginx -t # 4. 重载 docker exec beian-nginx nginx -s reload ``` ### 本地项目环境变量 `.env` 文件中的配置(当前值): ``` DOMAIN_RESUME_WEB=me.dxz99wyr.cn DOMAIN_MINIAPP_WEB=miniapp.dxz99wyr.cn DOMAIN_RESUME_API=api-resume.dxz99wyr.cn DOMAIN_MINIAPP_API=api-miniapp.dxz99wyr.cn NGINX_HTTP_PORT=8080 NGINX_HTTPS_PORT=8443 TZ=Asia/Shanghai ``` > 生产环境 `.env.example` 中默认端口是 80/443,当前 `.env` 用 8080/8443 是为了和生产环境 beian-nginx 的 80/443 错开。 --- ## 八、待办事项 | # | 事项 | 优先级 | |---|------|--------| | 1 | beian-nginx 补充 me、miniapp、api-resume 三个域名的中转配置 | 高 | | 2 | 将 `services/resume-web/html/` 占位页面替换为真实简历代码 | 高 | | 3 | 实现个人简历后台(`services/resume-api/`)真实后端代码 | 中 | | 4 | 配置 HTTPS / SSL 证书(运行 `./scripts/setup-ssl.sh`) | 中 | | 5 | 配置日志轮转 (logrotate) | 低 | | 6 | 小程序网站(`miniapp-web`)接入真实前端代码 | 低 |