609 lines
13 KiB
Markdown
609 lines
13 KiB
Markdown
# ETest-LIMS 阿里云部署完整教程
|
||
|
||
## 📋 部署前准备
|
||
|
||
### 1. 阿里云服务器要求
|
||
|
||
| 配置项 | 最低要求 | 推荐配置 |
|
||
|--------|----------|----------|
|
||
| CPU | 2核 | 4核 |
|
||
| 内存 | 4GB | 8GB |
|
||
| 磁盘 | 50GB | 100GB SSD |
|
||
| 带宽 | 1Mbps | 5Mbps |
|
||
| 系统 | CentOS 7/8 或 Ubuntu 20.04+ | Ubuntu 22.04 LTS |
|
||
|
||
### 2. 需要开放的端口
|
||
|
||
在阿里云控制台 → 安全组 → 配置规则,添加以下入方向规则:
|
||
|
||
| 端口 | 协议 | 授权对象 | 说明 |
|
||
|------|------|----------|------|
|
||
| 22 | TCP | 你的IP | SSH远程连接 |
|
||
| 80 | TCP | 0.0.0.0/0 | HTTP访问(前端) |
|
||
| 9099 | TCP | 0.0.0.0/0 | API接口(后端) |
|
||
| 443 | TCP | 0.0.0.0/0 | HTTPS(可选) |
|
||
|
||
> ⚠️ **注意**:3306(MySQL) 和 6379(Redis) 建议不对外开放,仅供内网访问
|
||
|
||
---
|
||
|
||
## 🚀 部署方式选择
|
||
|
||
| 方式 | 适用场景 | 特点 |
|
||
|------|----------|------|
|
||
| **方式一:Docker Compose** | 快速部署、测试环境 | 一键部署,所有服务容器化 |
|
||
| **方式二:手动部署** | 生产环境、性能要求高 | 前端用系统 Nginx,性能更好 |
|
||
|
||
---
|
||
|
||
## 🚀 方式一:Docker Compose 部署(推荐用于测试)
|
||
|
||
所有服务(前端、后端、MySQL、Redis)都运行在 Docker 容器中。
|
||
|
||
### 步骤 1:连接服务器
|
||
|
||
```bash
|
||
# Windows 使用 PowerShell 或 Git Bash
|
||
ssh root@<你的服务器IP>
|
||
|
||
# 示例
|
||
ssh root@123.57.81.127
|
||
```
|
||
|
||
### 步骤 2:安装 Docker 和 Docker Compose
|
||
|
||
```bash
|
||
# 一键安装脚本
|
||
curl -fsSL https://get.docker.com | bash
|
||
|
||
# 启动 Docker
|
||
systemctl start docker
|
||
systemctl enable docker
|
||
|
||
# 安装 Docker Compose
|
||
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
|
||
curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
chmod +x /usr/local/bin/docker-compose
|
||
|
||
# 验证安装
|
||
docker --version
|
||
docker-compose --version
|
||
```
|
||
|
||
### 步骤 3:上传项目代码
|
||
|
||
**方式 A:使用 scp 命令上传(推荐)**
|
||
|
||
```bash
|
||
# 在本地电脑执行(Windows PowerShell 或 Git Bash)
|
||
# 先进入项目目录
|
||
cd C:\PPRO\ETest-Vue-FastAPI
|
||
|
||
# 打包项目(排除 node_modules 和 venv)
|
||
tar -czvf etest-lims.tar.gz \
|
||
--exclude='ruoyi-fastapi-frontend/node_modules' \
|
||
--exclude='ruoyi-fastapi-backend/myenv' \
|
||
--exclude='ruoyi-fastapi-backend/venv' \
|
||
--exclude='.git' \
|
||
.
|
||
|
||
# 上传到服务器
|
||
scp etest-lims.tar.gz root@<服务器IP>:/opt/
|
||
|
||
# 示例
|
||
scp etest-lims.tar.gz root@123.57.81.127:/opt/
|
||
```
|
||
|
||
**方式 B:使用 Git 克隆**
|
||
|
||
```bash
|
||
# 在服务器上执行
|
||
cd /opt
|
||
git clone <你的Git仓库地址> ETest-Vue-FastAPI
|
||
```
|
||
|
||
### 步骤 4:在服务器上解压并部署
|
||
|
||
```bash
|
||
# 连接服务器
|
||
ssh root@<服务器IP>
|
||
|
||
# 进入上传目录
|
||
cd /opt
|
||
|
||
# 解压项目
|
||
tar -xzvf etest-lims.tar.gz -C ETest-Vue-FastAPI/
|
||
cd ETest-Vue-FastAPI
|
||
|
||
# 查看文件确认
|
||
ls -la
|
||
```
|
||
|
||
### 步骤 5:修改前端 API 地址
|
||
|
||
```bash
|
||
# 编辑前端 Dockerfile,修改 API 地址为你的服务器IP
|
||
vim ruoyi-fastapi-frontend/Dockerfile
|
||
```
|
||
|
||
找到这行:
|
||
```dockerfile
|
||
ENV VITE_APP_BASE_API=http://localhost:9099/prod-api
|
||
```
|
||
|
||
改为你的服务器IP:
|
||
```dockerfile
|
||
ENV VITE_APP_BASE_API=http://123.57.81.127:9099/prod-api
|
||
```
|
||
|
||
> 💡 **提示**:如果你配置了域名,也可以写域名,如 `http://etest.yourdomain.com/prod-api`
|
||
|
||
### 步骤 6:执行部署
|
||
|
||
```bash
|
||
# 给脚本执行权限
|
||
chmod +x deploy-aliyun.sh
|
||
|
||
# 执行部署
|
||
./deploy-aliyun.sh
|
||
```
|
||
|
||
部署过程大约需要 5-10 分钟,取决于服务器配置和网络速度。
|
||
|
||
### 步骤 7:验证部署
|
||
|
||
```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
|
||
```
|
||
|
||
### 步骤 8:访问系统
|
||
|
||
在浏览器中访问:
|
||
- 前端页面:`http://<服务器IP>`
|
||
- API文档:`http://<服务器IP>:9099/docs`
|
||
- 后端接口:`http://<服务器IP>:9099/prod-api`
|
||
|
||
默认账号密码:
|
||
- 用户名:`admin`
|
||
- 密码:`admin123`
|
||
|
||
---
|
||
|
||
## 🔧 方式二:手动部署(更灵活)
|
||
|
||
如果你需要更多控制,可以手动执行每一步:
|
||
|
||
### 1. 安装 Docker
|
||
|
||
```bash
|
||
# Ubuntu/Debian
|
||
apt-get update
|
||
apt-get install -y docker.io docker-compose
|
||
|
||
# CentOS/RHEL
|
||
yum install -y docker docker-compose
|
||
systemctl start docker
|
||
systemctl enable docker
|
||
```
|
||
|
||
### 2. 创建项目目录
|
||
|
||
```bash
|
||
mkdir -p /opt/ETest-Vue-FastAPI
|
||
cd /opt/ETest-Vue-FastAPI
|
||
```
|
||
|
||
### 3. 上传代码
|
||
|
||
使用 WinSCP、FileZilla 或 scp 上传项目文件到 `/opt/ETest-Vue-FastAPI`
|
||
|
||
### 4. 构建并启动
|
||
|
||
```bash
|
||
cd /opt/ETest-Vue-FastAPI
|
||
|
||
# 构建镜像
|
||
docker-compose -f docker-compose-aliyun.yml build
|
||
|
||
# 启动服务
|
||
docker-compose -f docker-compose-aliyun.yml up -d
|
||
|
||
# 查看状态
|
||
docker-compose -f docker-compose-aliyun.yml ps
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 方式三:手动部署(推荐用于生产)
|
||
|
||
前端使用系统 Nginx 部署(性能更好),后端使用 Docker 部署。
|
||
|
||
### 架构差异
|
||
|
||
| 组件 | Docker Compose 方式 | 手动部署方式 |
|
||
|------|---------------------|--------------|
|
||
| 前端 | Docker Nginx 容器 | 系统 Nginx |
|
||
| 后端 | Docker 容器 | Docker 容器 |
|
||
| MySQL | Docker 容器 | Docker 容器 |
|
||
| Redis | Docker 容器 | Docker 容器 |
|
||
|
||
### 部署步骤
|
||
|
||
#### 步骤 1:连接服务器并安装依赖
|
||
|
||
```bash
|
||
ssh root@<服务器IP>
|
||
|
||
# 安装 Nginx、Docker、Node.js
|
||
apt-get update
|
||
apt-get install -y nginx docker.io docker-compose nodejs npm
|
||
|
||
# 启动 Nginx
|
||
systemctl start nginx
|
||
systemctl enable nginx
|
||
```
|
||
|
||
#### 步骤 2:上传并解压项目
|
||
|
||
```bash
|
||
cd /opt
|
||
tar -xzvf etest-lims.tar.gz -C ETest-Vue-FastAPI/
|
||
cd ETest-Vue-FastAPI
|
||
```
|
||
|
||
#### 步骤 3:构建前端
|
||
|
||
```bash
|
||
cd ruoyi-fastapi-frontend
|
||
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 构建生产包
|
||
npm run build
|
||
|
||
# 创建 Nginx 目录并复制文件
|
||
mkdir -p /var/www/etest-lims
|
||
cp -r dist/* /var/www/etest-lims/
|
||
|
||
cd /opt/ETest-Vue-FastAPI
|
||
```
|
||
|
||
#### 步骤 4:配置 Nginx
|
||
|
||
```bash
|
||
# 复制 Nginx 配置
|
||
cp nginx-manual.conf /etc/nginx/sites-available/etest-lims
|
||
|
||
# 启用配置
|
||
ln -sf /etc/nginx/sites-available/etest-lims /etc/nginx/sites-enabled/
|
||
rm -f /etc/nginx/sites-enabled/default
|
||
|
||
# 测试配置
|
||
nginx -t
|
||
|
||
# 重启 Nginx
|
||
systemctl restart nginx
|
||
```
|
||
|
||
#### 步骤 5:启动后端(Docker)
|
||
|
||
```bash
|
||
# 只启动 MySQL、Redis、后端(不启动前端容器)
|
||
docker-compose -f docker-compose-aliyun.yml up -d mysql redis backend
|
||
```
|
||
|
||
#### 步骤 6:验证
|
||
|
||
```bash
|
||
# 检查 Nginx
|
||
curl http://localhost
|
||
|
||
# 检查后端
|
||
curl http://localhost:9099/docs
|
||
|
||
# 查看状态
|
||
docker-compose -f docker-compose-aliyun.yml ps
|
||
systemctl status nginx
|
||
```
|
||
|
||
### 更新前端(后续更新)
|
||
|
||
```bash
|
||
cd /opt/ETest-Vue-FastAPI/ruoyi-fastapi-frontend
|
||
|
||
# 拉取最新代码
|
||
git pull
|
||
|
||
# 重新构建
|
||
npm install
|
||
npm run build
|
||
|
||
# 复制到 Nginx 目录
|
||
cp -r dist/* /var/www/etest-lims/
|
||
|
||
# 重启 Nginx(可选)
|
||
systemctl reload nginx
|
||
```
|
||
|
||
---
|
||
|
||
## 📁 项目结构说明
|
||
|
||
```
|
||
ETest-Vue-FastAPI/
|
||
├── docker-compose-aliyun.yml # 阿里云部署配置
|
||
├── deploy-aliyun.sh # 部署脚本
|
||
├── DEPLOY-ALIYUN.md # 部署文档
|
||
├── ruoyi-fastapi-backend/ # 后端代码
|
||
│ ├── Dockerfile # 后端镜像配置
|
||
│ └── ...
|
||
├── ruoyi-fastapi-frontend/ # 前端代码
|
||
│ ├── Dockerfile # 前端镜像配置
|
||
│ └── ...
|
||
└── sql/ # 数据库脚本
|
||
└── init/ # 初始化脚本(可选)
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ 常用运维命令
|
||
|
||
### 查看服务状态
|
||
|
||
```bash
|
||
cd /opt/ETest-Vue-FastAPI
|
||
|
||
# 查看所有容器
|
||
docker-compose -f docker-compose-aliyun.yml ps
|
||
|
||
# 查看资源占用
|
||
docker stats
|
||
```
|
||
|
||
### 查看日志
|
||
|
||
```bash
|
||
# 查看所有日志
|
||
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
|
||
|
||
# 只看 MySQL 日志
|
||
docker-compose -f docker-compose-aliyun.yml logs -f mysql
|
||
|
||
# 查看最近100行日志
|
||
docker-compose -f docker-compose-aliyun.yml logs --tail=100 backend
|
||
```
|
||
|
||
### 重启服务
|
||
|
||
```bash
|
||
# 重启所有服务
|
||
docker-compose -f docker-compose-aliyun.yml restart
|
||
|
||
# 重启单个服务
|
||
docker-compose -f docker-compose-aliyun.yml restart backend
|
||
docker-compose -f docker-compose-aliyun.yml restart frontend
|
||
```
|
||
|
||
### 停止服务
|
||
|
||
```bash
|
||
# 停止(保留数据)
|
||
docker-compose -f docker-compose-aliyun.yml down
|
||
|
||
# 停止并删除数据卷(⚠️ 会清空数据库)
|
||
docker-compose -f docker-compose-aliyun.yml down -v
|
||
```
|
||
|
||
### 进入容器内部
|
||
|
||
```bash
|
||
# 进入后端容器
|
||
docker-compose -f docker-compose-aliyun.yml exec backend bash
|
||
|
||
# 进入 MySQL 容器
|
||
docker-compose -f docker-compose-aliyun.yml exec mysql mysql -u root -p
|
||
|
||
# 进入 Redis 容器
|
||
docker-compose -f docker-compose-aliyun.yml exec redis redis-cli
|
||
```
|
||
|
||
### 更新部署
|
||
|
||
```bash
|
||
cd /opt/ETest-Vue-FastAPI
|
||
|
||
# 1. 拉取最新代码(如果用Git)
|
||
git pull
|
||
|
||
# 2. 停止旧服务
|
||
docker-compose -f docker-compose-aliyun.yml down
|
||
|
||
# 3. 重新构建
|
||
docker-compose -f docker-compose-aliyun.yml build --no-cache
|
||
|
||
# 4. 启动新服务
|
||
docker-compose -f docker-compose-aliyun.yml up -d
|
||
|
||
# 5. 验证
|
||
docker-compose -f docker-compose-aliyun.yml ps
|
||
```
|
||
|
||
---
|
||
|
||
## 🔒 安全配置建议
|
||
|
||
### 1. 修改默认密码
|
||
|
||
部署完成后,立即修改以下默认密码:
|
||
|
||
```bash
|
||
# 进入 MySQL 容器修改密码
|
||
docker-compose -f docker-compose-aliyun.yml exec mysql mysql -u root -p
|
||
|
||
# 在 MySQL 中执行
|
||
ALTER USER 'root'@'%' IDENTIFIED BY '你的新密码';
|
||
ALTER USER 'cpy_admin'@'%' IDENTIFIED BY '你的新密码';
|
||
FLUSH PRIVILEGES;
|
||
```
|
||
|
||
同时修改 `docker-compose-aliyun.yml` 中的环境变量。
|
||
|
||
### 2. 配置 HTTPS(推荐)
|
||
|
||
使用 Nginx 反向代理 + SSL 证书:
|
||
|
||
```bash
|
||
# 安装 Nginx
|
||
apt-get install -y nginx
|
||
|
||
# 配置 Nginx
|
||
cat > /etc/nginx/sites-available/etest << 'EOF'
|
||
server {
|
||
listen 80;
|
||
server_name etest.yourdomain.com;
|
||
return 301 https://$server_name$request_uri;
|
||
}
|
||
|
||
server {
|
||
listen 443 ssl;
|
||
server_name etest.yourdomain.com;
|
||
|
||
ssl_certificate /path/to/your/cert.pem;
|
||
ssl_certificate_key /path/to/your/key.pem;
|
||
|
||
location / {
|
||
proxy_pass http://localhost:80;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
|
||
location /prod-api/ {
|
||
proxy_pass http://localhost:9099/prod-api/;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
}
|
||
EOF
|
||
|
||
# 启用配置
|
||
ln -s /etc/nginx/sites-available/etest /etc/nginx/sites-enabled/
|
||
nginx -t
|
||
systemctl restart nginx
|
||
```
|
||
|
||
### 3. 配置防火墙
|
||
|
||
```bash
|
||
# 安装并启用防火墙
|
||
apt-get install -y ufw
|
||
ufw default deny incoming
|
||
ufw default allow outgoing
|
||
|
||
# 允许必要端口
|
||
ufw allow 22/tcp # SSH
|
||
ufw allow 80/tcp # HTTP
|
||
ufw allow 443/tcp # HTTPS
|
||
ufw allow 9099/tcp # API
|
||
|
||
# 启用防火墙
|
||
ufw enable
|
||
|
||
# 查看状态
|
||
ufw status
|
||
```
|
||
|
||
---
|
||
|
||
## ❓ 常见问题
|
||
|
||
### Q1: 部署后无法访问
|
||
|
||
**检查步骤:**
|
||
|
||
```bash
|
||
# 1. 检查容器是否运行
|
||
docker-compose -f docker-compose-aliyun.yml ps
|
||
|
||
# 2. 检查端口监听
|
||
netstat -tlnp | grep -E '80|9099'
|
||
|
||
# 3. 检查安全组规则(阿里云控制台)
|
||
# 确保 80 和 9099 端口已开放
|
||
|
||
# 4. 检查防火墙
|
||
ufw status
|
||
|
||
# 5. 查看日志定位问题
|
||
docker-compose -f docker-compose-aliyun.yml logs
|
||
```
|
||
|
||
### Q2: 数据库连接失败
|
||
|
||
```bash
|
||
# 检查 MySQL 容器日志
|
||
docker-compose -f docker-compose-aliyun.yml logs mysql
|
||
|
||
# 进入 MySQL 容器检查
|
||
docker-compose -f docker-compose-aliyun.yml exec mysql mysql -u root -p -e "SHOW DATABASES;"
|
||
```
|
||
|
||
### Q3: 如何备份数据库
|
||
|
||
```bash
|
||
# 备份数据库
|
||
docker-compose -f docker-compose-aliyun.yml exec mysql mysqldump -u root -p ruoyi-fastapi > backup_$(date +%Y%m%d).sql
|
||
|
||
# 恢复数据库
|
||
docker-compose -f docker-compose-aliyun.yml exec -T mysql mysql -u root -p ruoyi-fastapi < backup_20260324.sql
|
||
```
|
||
|
||
### Q4: 如何修改端口
|
||
|
||
编辑 `docker-compose-aliyun.yml`,修改 ports 部分:
|
||
|
||
```yaml
|
||
services:
|
||
frontend:
|
||
ports:
|
||
- "8080:80" # 改为 8080 端口
|
||
|
||
backend:
|
||
ports:
|
||
- "8081:9099" # 改为 8081 端口
|
||
```
|
||
|
||
然后重启:
|
||
```bash
|
||
docker-compose -f docker-compose-aliyun.yml down
|
||
docker-compose -f docker-compose-aliyun.yml up -d
|
||
```
|
||
|
||
---
|
||
|
||
## 📞 需要帮助?
|
||
|
||
如果遇到问题:
|
||
|
||
1. 先查看日志:`docker-compose -f docker-compose-aliyun.yml logs -f`
|
||
2. 检查服务状态:`docker-compose -f docker-compose-aliyun.yml ps`
|
||
3. 确认安全组规则已正确配置
|
||
4. 检查服务器防火墙设置
|
||
|
||
---
|
||
|
||
**部署完成!🎉**
|