若依(RuoYi)前后端分离版(即 ruoyi-vue 或 ruoyi-cloud)在 Linux 服务器上部署,需分别配置后端(Spring Boot + MySQL + Redis + Nginx)和前端(Vue CLI 项目),并确保环境兼容、安全可靠。以下是生产环境推荐的完整配置清单与关键步骤(以主流 ruoyi-vue(单体后端 + Vue 前端)为例):
✅ 一、基础环境要求(Linux 服务器)
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| 操作系统 | CentOS 7/8、Ubuntu 20.04/22.04、Alibaba Cloud Linux 3 | 避免使用过旧或已 EOL 系统(如 CentOS 6) |
| JDK | OpenJDK 11 或 17(LTS) | ⚠️ 若依 v4.x+ 官方推荐 JDK 11;v5.x+ 支持 JDK 17。禁止使用 JDK 8(不兼容 Spring Boot 2.7+/3.x) |
| Maven | 3.6.3+(编译后端用) | 仅构建时需要,运行时无需 |
| Node.js | 16.x 或 18.x(LTS) | Vue CLI 5.x 要求 Node ≥ 16.10;避免使用 Node 20+(部分插件兼容性问题) |
| npm / pnpm | npm ≥ 8.x 或 pnpm ≥ 8.x | 推荐 pnpm(更快更省空间) |
🔍 验证命令:
java -version # 应显示 openjdk 11.0.x 或 17.0.x node -v # 应显示 v16.x 或 v18.x npm -v # ≥ 8.x,或 pnpm -v ≥ 8.x
✅ 二、运行时依赖服务(必须安装并启动)
| 服务 | 版本建议 | 配置要点 | 是否必需 |
|---|---|---|---|
| MySQL | 5.7+ 或 8.0.x(推荐 8.0.33+) | • 字符集设为 utf8mb4• 创建数据库 ry(默认名),执行 sql/ry_2023xxxx.sql 初始化• 开放远程访问(如需)并授权用户(如 ry@%) |
✅ 必需 |
| Redis | 6.x 或 7.x(单机即可) | • 修改 redis.conf:bind 0.0.0.0(或绑定内网IP)、protected-mode no(生产建议改 yes + 密码)• 设置密码( requirepass yourStrongPass123)并在 application.yml 中配置 |
✅ 必需(验证码、在线用户、缓存等) |
| Nginx | 1.18+(反向X_X + 静态资源服务) | • 用于X_X前端(/)和后端 API(/prod-api/)• 启用 gzip、HTTPS(强烈建议)、CORS(若跨域调试) |
✅ 必需(替代前端 npm run serve 和后端直接暴露端口) |
💡 注:若依默认后端接口路径为
/prod-api/(见vue.config.js中devServer.proxy和nginx.conf配置),Nginx 必须正确重写路径。
✅ 三、后端部署(Spring Boot)
1. 编译打包(在服务器或本地)
cd ruoyi/ruoyi-admin
mvn clean package -Dmaven.test.skip=true
# 输出:target/ruoyi-admin.jar
2. 配置文件修改(关键!)
-
编辑
ruoyi-admin/src/main/resources/application-prod.yml:spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 username: ry password: yourPassword redis: host: 127.0.0.1 port: 6379 password: yourStrongPass123 # 若 Redis 设了密码,必须填 database: 0 # 生产环境关闭 devtools、开启日志等
3. 启动(推荐使用 systemd 管理)
# 创建 /etc/systemd/system/ruoyi-admin.service
[Unit]
Description=Ruoyi Admin Service
After=network.target
[Service]
Type=simple
User=ruoyi
WorkingDirectory=/opt/ruoyi
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/ruoyi/ruoyi-admin.jar --spring.profiles.active=prod
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable ruoyi-admin
sudo systemctl start ruoyi-admin
sudo systemctl status ruoyi-admin # 检查是否 RUNNING
✅ 日志查看:
journalctl -u ruoyi-admin -f
✅ 四、前端部署(Vue)
1. 构建生产包
cd ruoyi/ruoyi-ui
npm install # 或 pnpm install
npm run build # 输出到 dist/ 目录
2. 配置 Nginx(关键!)
# /etc/nginx/conf.d/ruoyi.conf
upstream ruoyi-api {
server 127.0.0.1:8080; # 后端 Spring Boot 默认端口
}
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或IP
# 前端静态资源
location / {
root /opt/ruoyi/dist;
try_files $uri $uri/ /index.html;
}
# 后端APIX_X(必须匹配前端 axios baseURL)
location /prod-api/ {
proxy_set_header Host $http_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;
proxy_pass http://ruoyi-api/;
proxy_redirect off;
proxy_read_timeout 60;
}
# 可选:启用 HTTPS(强烈推荐)
# listen 443 ssl;
# ssl_certificate /path/to/fullchain.pem;
# ssl_certificate_key /path/to/privkey.pem;
}
✅ 重启 Nginx:sudo nginx -t && sudo systemctl reload nginx
⚠️ 注意:
/prod-api/是若依前端默认 API 前缀(见vue.config.js),Nginx 的location /prod-api/必须存在且proxy_pass正确指向后端。
✅ 五、安全与生产加固(重要!)
| 项目 | 推荐操作 |
|---|---|
| 防火墙 | 开放 80/443(Nginx),禁止开放 8080(后端端口)给公网;仅允许 Nginx 本地访问 |
| 数据库安全 | • 删除匿名用户、test 数据库 • MySQL 用户仅授权最小权限( GRANT SELECT,INSERT,UPDATE,DELETE ON ry.* TO 'ry'@'localhost') |
| Redis 安全 | • 生产务必设置密码 + bind 127.0.0.1(禁用公网监听)• 或通过防火墙限制 6379 仅允许 127.0.0.1 访问 |
| 后端安全 | • 修改默认管理员账号密码(首次登录后立即修改) • 在 application-prod.yml 中关闭敏感端点:management.endpoints.web.exposure.include: health,info |
| HTTPS | 使用 Let’s Encrypt(certbot)免费签发证书,强制 HTTP → HTTPS 重定向 |
✅ 六、常见问题排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 页面空白 / 404 | Nginx 未正确指向 dist/ 或 try_files 错误 |
检查 root 路径、index.html 存在性、Nginx 错误日志 tail -f /var/log/nginx/error.log |
| 登录提示“系统错误”或 500 | 后端未启动 / MySQL 连接失败 / Redis 密码错误 | systemctl status ruoyi-admin + 查看日志;检查 application-prod.yml 数据库/Redis 配置 |
| 验证码不显示 | Redis 未启动 / 密码错误 / 连接超时 | redis-cli -h 127.0.0.1 -p 6379 -a yourPass PING 测试 |
| 登录后菜单为空 | 前端未正确加载路由(可能因 prod-api/getMenu 接口 401/404) |
检查浏览器 Network → /prod-api/getMenu 返回状态;确认后端 ruoyi-system 模块正常、数据库 sys_menu 有数据 |
✅ 附:一键检查脚本(可选)
#!/bin/bash
echo "=== Ruoyi 环境检查 ==="
java -version 2>/dev/null | head -1
node -v
npm -v
mysql --version 2>/dev/null
redis-cli --version 2>/dev/null
nginx -v 2>/dev/null
systemctl is-active ruoyi-admin 2>/dev/null
curl -I http://localhost:8080/actuator/health 2>/dev/null | head -1
echo "✅ 检查完成"
📌 总结核心要点:
✅ JDK 11/17 + Node 16/18
✅ MySQL(utf8mb4)+ Redis(带密码)+ Nginx(反向X_X/prod-api/)
✅ 后端application-prod.yml配置正确 + systemd 托管
✅ 前端npm run build+ Nginxroot+try_files
✅ 严禁暴露 8080/6379/3306 到公网!全部走 Nginx 统一入口
如需我提供:
🔹 完整的 nginx.conf 示例
🔹 systemd 服务文件模板
🔹 MySQL 初始化 SQL 下载链接
🔹 Let’s Encrypt HTTPS 配置指南
🔹 或针对 ruoyi-cloud(微服务版)的额外配置
欢迎随时告知,我可以为你定制生成 👇
祝你部署顺利!🚀
CLOUD云枢