init: ALiYunManager 基础设施项目 — nginx配置/docker-compose/部署文档

This commit is contained in:
Superuser
2026-05-16 23:27:24 +08:00
commit 0413d2715c
28 changed files with 2590 additions and 0 deletions
+175
View File
@@ -0,0 +1,175 @@
# ALiYunManager - 阿里云多服务 Docker 部署方案
## 架构概览
```
┌─────────────────────────────────────────────────────────────┐
│ 阿里云服务器 (8.136.137.59) │
│ 主 Nginx (Docker 容器) │
│ ┌──────────┬──────────┬──────────────┬──────────────┐ │
│ │ me. │ www. │ api-resume. │api-miniapp. │ │
│ │dxz99wyr. │dxz99wyr. │ dxz99wyr.cn │dxz99wyr.cn │ │
│ │cn │cn │ │ │ │
│ └────┬─────┴────┬─────┴──────┬───────┴──────┬───────┘ │
│ │ │ │ │ │
│ ┌────▼─────┐ ┌──▼─────┐ ┌───▼──────┐ ┌────▼──────┐ │
│ │ Docker 1 │ │Docker 2│ │ Docker 3 │ │ Docker 4 │ │
│ │个人简历网站│ │小程序网站│ │个人简历后台│ │小程序后台 │ │
│ │内部Nginx │ │内部Nginx│ │内部Nginx │ │内部Nginx │ │
│ └──────────┘ └────────┘ └──────────┘ └───────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## 域名规划
| 服务 | 域名 | 类型 |
|------|------|------|
| 个人简历网站 | `me.dxz99wyr.cn` | 前端 |
| 小程序网站 | `www.dxz99wyr.cn` | 前端 |
| 个人简历后台 | `api-resume.dxz99wyr.cn` | API |
| 小程序后台 | `api-miniapp.dxz99wyr.cn` | API |
## 目录结构
```
ALiYunManager/
├── docker-compose.yml # 主 Docker Compose 文件
├── deploy.sh # 部署脚本
├── README.md # 本文件
├── nginx/
│ ├── nginx.conf # 主 Nginx 核心配置(**不要修改**)
│ ├── conf.d/ # 各个服务的反向代理配置(由服务自行管理)
│ │ ├── resume-web.conf
│ │ ├── miniapp-web.conf
│ │ ├── resume-api.conf
│ │ └── miniapp-api.conf
│ ├── ssl/ # SSL 证书目录
│ └── logs/ # 日志目录
└── services/ # 各个服务的配置(每个服务自行管理)
├── resume-web/
│ ├── nginx.conf # 服务内部 Nginx 配置
│ └── html/ # 静态文件
├── miniapp-web/
│ ├── nginx.conf
│ └── html/
├── resume-api/
│ ├── nginx.conf # 内部 Nginx 配置或反向代理
│ └── Dockerfile # 后端 Dockerfile 模板
└── miniapp-api/
├── nginx.conf
└── Dockerfile
```
## 核心设计原则
1. **主 Nginx 只负责反向代理**:将外部请求按域名分发到各个 Docker 容器
2. **每个服务独立管理自己的配置**
- 每个服务在 `nginx/conf.d/` 下放一个 `.conf` 文件(主 Nginx 加载)
- 每个服务在 `services/服务名/` 下放自己的内部 Nginx 配置
3. **所有服务都在 Docker 容器中运行**:便于管理和隔离
4. **使用 Docker 内部网络通信**:主 Nginx 通过容器名直接访问服务
## 快速开始
### 1. 上传到服务器
```bash
# 在项目目录打包
zip -r aliyun-manager.zip ALiYunManager/
# 上传到服务器(使用你的密钥)
scp -i "D:\003_Project\小程序连接.pem" aliyun-manager.zip root@8.136.137.59:/opt/
```
### 2. 在服务器上部署
```bash
ssh -i "D:\003_Project\小程序连接.pem" root@8.136.137.59
cd /opt
unzip aliyun-manager.zip
cd ALiYunManager
chmod +x deploy.sh
./deploy.sh
```
### 3. 配置 DNS
在域名管理后台添加以下解析记录:
| 记录类型 | 主机记录 | 记录值 |
|---------|---------|--------|
| A | me | 8.136.137.59 |
| A | miniapp | 8.136.137.59 |
| A | api-resume | 8.136.137.59 |
| A | api-miniapp | 8.136.137.59 |
## 常用命令
```bash
# 启动所有服务
docker-compose up -d
# 停止所有服务
docker-compose down
# 查看主 Nginx 日志
docker-compose logs -f nginx
# 重启主 Nginx
docker-compose restart nginx
# 查看所有容器状态
docker-compose ps
# 重载 Nginx 配置(不重启容器)
docker-compose exec nginx nginx -s reload
```
## 配置 HTTPS (SSL)
### 方法一:使用 Certbot (推荐)
```bash
# 进入容器安装 certbot
docker-compose exec nginx sh
apk add certbot
# 申请证书(需要先确保 DNS 已解析)
certbot certonly --standalone -d me.dxz99wyr.cn -d www.dxz99wyr.cn -d api-resume.dxz99wyr.cn -d api-miniapp.dxz99wyr.cn
```
### 方法二:手动配置
将证书文件放入 `nginx/ssl/` 目录:
```
nginx/ssl/
├── me.dxz99wyr.cn.crt
├── me.dxz99wyr.cn.key
└── ...
```
然后修改对应服务的 `.conf` 文件,添加 443 监听和 SSL 配置。
## 各服务如何接入
### 前端网站接入
1. 将你的构建产物放入 `services/resume-web/html/` 目录
2. 如需修改内部 Nginx 配置,编辑 `services/resume-web/nginx.conf`
3. 如需修改反向代理规则,编辑 `nginx/conf.d/resume-web.conf`
4. 重启对应容器
### 后端 API 接入
1. 替换 `services/resume-api/Dockerfile` 为你的后端 Dockerfile
2. 修改 `services/resume-api/nginx.conf` 中的 `upstream` 指向你的应用端口
3. 如需修改反向代理规则,编辑 `nginx/conf.d/resume-api.conf`
4. 重新构建并启动容器
## 注意事项
1. **不要修改** `nginx/nginx.conf` 主配置文件,除非你需要调整全局参数
2. 各个服务的 `.conf` 文件命名不要冲突
3. 后端服务如果不需要内部 Nginx,可以直接暴露应用端口,主 Nginx 直接代理到应用端口
4. 生产环境建议开启防火墙,只开放 80 和 443 端口