快速部署指南
本文档只关注代码构建与部署,假设 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.jar1.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/health1.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-apiVITE_BASE_URL必须为空,不能填/webVITE_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 # 查看日志