appointment_system/server/README.md
2025-12-20 18:04:10 +08:00

194 lines
5.8 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.

# 服务器部署配置
此目录包含生产环境的 Docker 部署配置,使用**外部 MySQL 和 Redis** 服务。
## 目录结构
```
server/
├── docker-compose.yml # Docker Compose 配置
├── deploy.sh # 自动部署脚本
├── .env.example # 环境变量模板
├── .env # 实际环境变量(需手动创建)
├── nginx/ # Nginx 配置
│ ├── nginx.conf
│ └── conf.d/
│ └── default.conf
├── data/ # 数据目录(本地挂载,方便迁移)
│ ├── uploads/ # 用户上传的文件
│ └── logs/
│ ├── api/ # API 服务日志
│ └── nginx/ # Nginx 访问日志
├── admin-dist/ # Admin 打包后的静态文件(需手动放置)
└── README.md
```
## 架构说明
```
┌─────────────────────────────────────┐
│ 外部代理 (SSL) │
└──────────────┬──────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ Docker Compose (单一端口 2701) │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ Nginx │ │
│ │ /admin/* → 静态文件 (Admin 后台) │ │
│ │ /api/* → API 服务 │ │
│ │ /uploads → API 服务 │ │
│ └────────────────────────┬───────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ API 服务 (:3000) │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ MySQL │ │ Redis │
│ (外部服务) │ │ (外部服务) │
└─────────────┘ └─────────────┘
```
## 快速开始
### 1. 配置环境变量
```bash
cd server
cp .env.example .env
vim .env # 编辑配置
```
### 2. 构建 Admin 前端
```bash
cd ../admin
npm install
npm run build
# 将打包产物复制到 server 目录
cp -r dist ../server/admin-dist
```
### 3. 启动服务
```bash
cd server
docker-compose up -d --build
```
### 4. 验证服务
```bash
# 检查服务状态
docker-compose ps
# 访问 Admin 后台
curl http://localhost:2701/admin
# 检查 API
curl http://localhost:2701/health
curl http://localhost:2701/api/v1/services
```
## 访问地址
| 路径 | 说明 |
|------|------|
| `/admin` | Admin 管理后台 |
| `/api/*` | 后端 API 接口 |
| `/api-docs` | API 文档 |
| `/health` | 健康检查 |
| `/uploads/*` | 上传文件 |
## 常用命令
```bash
# 启动
docker-compose up -d
# 停止
docker-compose down
# 重新构建并启动
docker-compose up -d --build
# 查看日志
docker-compose logs -f
docker-compose logs -f api
docker-compose logs -f nginx
# 重启服务
docker-compose restart api
# 进入容器
docker exec -it overseas-appointment-api sh
docker exec -it overseas-appointment-nginx sh
```
## 更新 Admin 前端
```bash
# 1. 重新构建 admin
cd ../admin
npm run build
# 2. 更新静态文件
rm -rf ../server/admin-dist
cp -r dist ../server/admin-dist
# 3. 重启 nginx
cd ../server
docker-compose restart nginx
```
## 外部代理配置示例
### Nginx (外部)
```nginx
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://127.0.0.1:2701;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
## 故障排查
### Admin 页面 404
确认 `admin-dist` 目录存在且包含 `index.html`
```bash
ls -la server/admin-dist/
```
### API 连接数据库失败
```bash
# 检查数据库连通性
docker exec -it overseas-appointment-api sh
node -e "require('./src/models').sequelize.authenticate().then(() => console.log('OK')).catch(console.error)"
```
### 查看实时日志
```bash
docker-compose logs -f --tail=100
```