Skip to content

快速部署指南

本文档只关注代码构建与部署,假设 MySQL、Redis 等中间件已就绪。


一、后端部署

1.1 构建 JAR 包

在项目根目录执行:

bash
mvn clean package -Dmaven.test.skip=true -Dskip.repackage=true -pl yudao-server -am -Pprod

构建成功后,JAR 文件位于:

yudao-server/target/yudao-server.jar

1.2 上传到服务器

bash
scp yudao-server/target/yudao-server.jar root@你的服务器IP:/data/app/

1.3 启动服务

bash
# 后台启动,日志输出到 nohup.out
nohup java -Xms512m -Xmx2048m \
  -jar /data/app/yudao-server.jar \
  --spring.profiles.active=prod \
  > /data/app/nohup.out 2>&1 &

# 查看启动日志
tail -f /data/app/nohup.out

服务默认端口 48080,启动约 30-60 秒后可访问:

bash
curl http://127.0.0.1:48080/actuator/health

1.4 停止 / 重启

bash
# 查找进程
ps -ef | grep yudao-server | grep -v grep

# 停止
kill $(ps -ef | grep yudao-server | grep -v grep | awk '{print $2}')

# 重启 = 停止 + 启动

💡 建议:可以用 systemd 托管服务,实现开机自启和自动重启,参见 附录 A


二、前端部署

2.1 构建 dist

在前端项目根目录(ruoyi-office-vben)执行:

bash
# 安装依赖
pnpm install

# 构建内部依赖包
pnpm -r --filter "./packages/**" --filter "./internal/**" build

# 构建前端应用
cd apps/web-antd
pnpm build

构建成功后,产物位于:

apps/web-antd/dist/

2.2 确认前端环境变量

构建前检查 apps/web-antd/.env.production

bash
VITE_BASE_URL=
VITE_GLOB_API_URL=/admin-api
  • VITE_BASE_URL 必须为空,不能填 /web
  • VITE_GLOB_API_URL=/admin-api 走 Nginx 反代到后端

2.3 上传到服务器

dist/ 目录内容上传到 Nginx 的 web 目录:

bash
# 清理旧文件 + 上传
ssh root@你的服务器IP "rm -rf /data/nginx/html/web/*"
scp -r apps/web-antd/dist/* root@你的服务器IP:/data/nginx/html/web/

上传完成后前端即部署完毕,无需重启 Nginx(静态文件直接生效)。


三、Nginx 配置

只需关注三个 location:前端静态文件、后端 API 反代、SPA 路由兜底。

编辑 Nginx 配置文件(通常在 /etc/nginx/conf.d//data/nginx/conf/conf.d/ 下):

nginx
server {
    listen 80;
    server_name _;

    # 1. 前端静态文件(/web 路径)
    location /web {
        alias /data/nginx/html/web;     # 指向 dist 上传目录
        index index.html;
        try_files $uri $uri/ /web/index.html;  # SPA 路由兜底
    }

    # 2. 后端 API 反向代理
    location /admin-api {
        proxy_pass http://127.0.0.1:48080/admin-api;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # 3. 根路径跳转到管理后台(可选)
    location = / {
        return 302 /web;
    }
}

如果后端不在同一台机器,把 127.0.0.1 改成后端服务器 IP 即可。

修改完成后重新加载 Nginx:

bash
nginx -t && nginx -s reload

四、验证

检查项命令 / 地址预期结果
后端健康curl http://127.0.0.1:48080/actuator/health{"status":"UP"}
前端页面浏览器访问 http://服务器IP/web显示登录页
API 通信登录页输入账号密码点登录正常跳转到首页

附录 A:systemd 托管后端服务

创建服务文件 /etc/systemd/system/yudao-server.service

ini
[Unit]
Description=YuDao Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/data/app
ExecStart=/usr/bin/java -Xms512m -Xmx2048m -jar /data/app/yudao-server.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

启用并启动:

bash
systemctl daemon-reload
systemctl enable yudao-server
systemctl start yudao-server

# 常用命令
systemctl status yudao-server   # 状态
systemctl stop yudao-server     # 停止
systemctl restart yudao-server  # 重启
journalctl -u yudao-server -f   # 查看日志