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