13 KiB
13 KiB
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:连接服务器
# Windows 使用 PowerShell 或 Git Bash
ssh root@<你的服务器IP>
# 示例
ssh root@123.57.81.127
步骤 2:安装 Docker 和 Docker Compose
# 一键安装脚本
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 命令上传(推荐)
# 在本地电脑执行(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 克隆
# 在服务器上执行
cd /opt
git clone <你的Git仓库地址> ETest-Vue-FastAPI
步骤 4:在服务器上解压并部署
# 连接服务器
ssh root@<服务器IP>
# 进入上传目录
cd /opt
# 解压项目
tar -xzvf etest-lims.tar.gz -C ETest-Vue-FastAPI/
cd ETest-Vue-FastAPI
# 查看文件确认
ls -la
步骤 5:修改前端 API 地址
# 编辑前端 Dockerfile,修改 API 地址为你的服务器IP
vim ruoyi-fastapi-frontend/Dockerfile
找到这行:
ENV VITE_APP_BASE_API=http://localhost:9099/prod-api
改为你的服务器IP:
ENV VITE_APP_BASE_API=http://123.57.81.127:9099/prod-api
💡 提示:如果你配置了域名,也可以写域名,如
http://etest.yourdomain.com/prod-api
步骤 6:执行部署
# 给脚本执行权限
chmod +x deploy-aliyun.sh
# 执行部署
./deploy-aliyun.sh
部署过程大约需要 5-10 分钟,取决于服务器配置和网络速度。
步骤 7:验证部署
# 查看所有容器状态
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
# 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. 创建项目目录
mkdir -p /opt/ETest-Vue-FastAPI
cd /opt/ETest-Vue-FastAPI
3. 上传代码
使用 WinSCP、FileZilla 或 scp 上传项目文件到 /opt/ETest-Vue-FastAPI
4. 构建并启动
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:连接服务器并安装依赖
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:上传并解压项目
cd /opt
tar -xzvf etest-lims.tar.gz -C ETest-Vue-FastAPI/
cd ETest-Vue-FastAPI
步骤 3:构建前端
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
# 复制 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)
# 只启动 MySQL、Redis、后端(不启动前端容器)
docker-compose -f docker-compose-aliyun.yml up -d mysql redis backend
步骤 6:验证
# 检查 Nginx
curl http://localhost
# 检查后端
curl http://localhost:9099/docs
# 查看状态
docker-compose -f docker-compose-aliyun.yml ps
systemctl status nginx
更新前端(后续更新)
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/ # 初始化脚本(可选)
⚙️ 常用运维命令
查看服务状态
cd /opt/ETest-Vue-FastAPI
# 查看所有容器
docker-compose -f docker-compose-aliyun.yml ps
# 查看资源占用
docker stats
查看日志
# 查看所有日志
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
重启服务
# 重启所有服务
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
停止服务
# 停止(保留数据)
docker-compose -f docker-compose-aliyun.yml down
# 停止并删除数据卷(⚠️ 会清空数据库)
docker-compose -f docker-compose-aliyun.yml down -v
进入容器内部
# 进入后端容器
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
更新部署
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. 修改默认密码
部署完成后,立即修改以下默认密码:
# 进入 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 证书:
# 安装 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. 配置防火墙
# 安装并启用防火墙
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: 部署后无法访问
检查步骤:
# 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: 数据库连接失败
# 检查 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: 如何备份数据库
# 备份数据库
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 部分:
services:
frontend:
ports:
- "8080:80" # 改为 8080 端口
backend:
ports:
- "8081:9099" # 改为 8081 端口
然后重启:
docker-compose -f docker-compose-aliyun.yml down
docker-compose -f docker-compose-aliyun.yml up -d
📞 需要帮助?
如果遇到问题:
- 先查看日志:
docker-compose -f docker-compose-aliyun.yml logs -f - 检查服务状态:
docker-compose -f docker-compose-aliyun.yml ps - 确认安全组规则已正确配置
- 检查服务器防火墙设置
部署完成!🎉