ETest-Vue-FastAPI/DEPLOY-ALIYUN-GUIDE.md

13 KiB
Raw Permalink Blame History

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

📞 需要帮助?

如果遇到问题:

  1. 先查看日志:docker-compose -f docker-compose-aliyun.yml logs -f
  2. 检查服务状态:docker-compose -f docker-compose-aliyun.yml ps
  3. 确认安全组规则已正确配置
  4. 检查服务器防火墙设置

部署完成!🎉