# 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. **监控告警** - 配置服务监控和告警