Files
aliyun-manager/README.md
T

176 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 端口