ETest-Vue-FastAPI/DEPLOY-ALIYUN.md

183 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# ETest-LIMS 阿里云部署指南
## 快速开始
### 方式一Windows 本地测试
```bash
# 直接运行构建脚本
deploy-aliyun.bat
```
### 方式二:阿里云服务器部署
1. **上传项目到服务器**
```bash
# 在本地打包项目
tar -czvf etest-lims.tar.gz ETest-Vue-FastAPI/
# 上传到阿里云服务器
scp etest-lims.tar.gz root@<服务器IP>:/opt/
```
2. **在服务器上解压并部署**
```bash
# 登录服务器
ssh root@<服务器IP>
# 解压项目
cd /opt
tar -xzvf etest-lims.tar.gz
cd ETest-Vue-FastAPI
# 执行部署脚本
chmod +x deploy-aliyun.sh
./deploy-aliyun.sh
```
## 服务架构
```
┌─────────────────┐
│ Nginx (80) │ ← 前端 (Vue.js)
│ etest-frontend│
└────────┬────────┘
┌─────────────────┐
│ FastAPI (9099) │ ← 后端 API
│ etest-backend │
└────────┬────────┘
┌────┴────┐
▼ ▼
┌───────┐ ┌────────┐
│ MySQL │ │ Redis │
│(3306) │ │(6379) │
└───────┘ └────────┘
```
## 端口映射
| 服务 | 容器端口 | 宿主机端口 | 说明 |
|------|----------|------------|------|
| 前端 | 80 | 80 | Nginx 服务 |
| 后端 | 9099 | 9099 | FastAPI 服务 |
| MySQL | 3306 | 3306 | 数据库 |
| Redis | 6379 | 6379 | 缓存服务 |
## 环境变量
### 后端环境变量
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| APP_ENV | prod | 运行环境 |
| DB_HOST | mysql | 数据库主机 |
| DB_PORT | 3306 | 数据库端口 |
| DB_USERNAME | cpy_admin | 数据库用户名 |
| DB_PASSWORD | Tgzz2025+ | 数据库密码 |
| DB_DATABASE | ruoyi-fastapi | 数据库名 |
| REDIS_HOST | redis | Redis 主机 |
| REDIS_PORT | 6379 | Redis 端口 |
### 前端环境变量
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| VITE_APP_BASE_API | http://localhost:9099/prod-api | 后端 API 地址 |
## 常用命令
```bash
# 查看服务状态
docker-compose -f docker-compose-aliyun.yml ps
# 查看日志
docker-compose -f docker-compose-aliyun.yml logs -f
# 查看后端日志
docker-compose -f docker-compose-aliyun.yml logs -f backend
# 查看前端日志
docker-compose -f docker-compose-aliyun.yml logs -f frontend
# 重启服务
docker-compose -f docker-compose-aliyun.yml restart
# 停止服务
docker-compose -f docker-compose-aliyun.yml down
# 停止并删除数据卷(⚠️ 会清空数据库)
docker-compose -f docker-compose-aliyun.yml down -v
```
## 阿里云安全组配置
需要在阿里云控制台配置安全组规则,开放以下端口:
| 端口 | 协议 | 授权对象 | 说明 |
|------|------|----------|------|
| 80 | TCP | 0.0.0.0/0 | HTTP 访问 |
| 9099 | TCP | 0.0.0.0/0 | API 访问 |
| 3306 | TCP | 内网IP | MySQL建议仅内网访问 |
| 6379 | TCP | 内网IP | Redis建议仅内网访问 |
## 数据持久化
数据通过 Docker Volumes 持久化:
- `mysql_data` - MySQL 数据
- `redis_data` - Redis 数据
数据存储在 Docker 管理的卷中,即使容器删除,数据也不会丢失。
## 更新部署
```bash
# 1. 拉取最新代码
git pull
# 2. 重新构建并启动
docker-compose -f docker-compose-aliyun.yml down
docker-compose -f docker-compose-aliyun.yml build --no-cache
docker-compose -f docker-compose-aliyun.yml up -d
```
## 故障排查
### 1. 服务启动失败
```bash
# 查看详细日志
docker-compose -f docker-compose-aliyun.yml logs
# 检查端口占用
netstat -tlnp | grep 80
netstat -tlnp | grep 9099
```
### 2. 数据库连接失败
```bash
# 检查 MySQL 容器状态
docker-compose -f docker-compose-aliyun.yml ps mysql
# 进入 MySQL 容器检查
docker-compose -f docker-compose-aliyun.yml exec mysql mysql -u root -p
```
### 3. 前端无法访问后端
检查前端环境变量 `VITE_APP_BASE_API` 是否正确指向后端地址。
## 生产环境建议
1. **修改默认密码** - 修改 MySQL 和 Redis 的默认密码
2. **使用 HTTPS** - 配置 SSL 证书
3. **配置反向代理** - 使用 Nginx 或阿里云 SLB
4. **定期备份** - 配置数据库自动备份
5. **监控告警** - 配置服务监控和告警