11 KiB
11 KiB
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 助手必读)
绝对不能做的事
- 不要修改 beian-nginx 的基础配置(default_server、/quanyi 路径等),只能追加新的 server 块做域名中转
- 不要改动
nginx/nginx.conf(主 Nginx 核心配置),除非明确需要调整全局参数 - 不要将 3000、8080、8443 端口暴露到外网
- 不要删除或停用 beian-nginx、quanyixiaozhushou-app、quanyixiaozhushou-mongo 容器
- 不要在 main-nginx 容器内直接改配置,应修改本地
nginx/conf.d/*.conf文件后重载
新增服务时的标准流程
- 在
services/下创建服务目录,编写 Dockerfile 和内部 nginx.conf - 在
nginx/conf.d/下创建对应的反向代理.conf文件 - 在
.env中添加新子域名变量 - 在
docker-compose.yml中添加新服务定义 - 在 beian-nginx 中追加对应的中转 server 块
- 在阿里云 DNS 添加子域名 A 记录
修改 beian-nginx 配置的标准流程
# 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)接入真实前端代码 |
低 |