# 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. 检查服务器防火墙设置 --- **部署完成!🎉**