若依(RuoYi)前后端分离版在 Linux 服务器上运行,通常需要配置 JDK、MySQL、Redis、Nginx 以及前端构建产物。以下是核心环境要求与部署步骤详解:
一、基础环境要求
| 组件 | 最低版本 | 推荐版本 | 说明 |
|---|---|---|---|
| 操作系统 | CentOS 7 / Ubuntu 18.04+ | CentOS 7.9 / Ubuntu 22.04 LTS | 需支持 systemd 服务管理 |
| JDK | JDK 1.8 | JDK 11 或 17(根据项目配置) | 后端 Spring Boot 依赖;注意 ruoyi 默认多为 JDK 8 |
| MySQL | 5.7 | MySQL 5.7 或 8.0 | 需创建对应数据库并导入 SQL |
| Redis | 3.0+ | Redis 6.x 或 7.x | 用于缓存、验证码、分布式锁等 |
| Nginx | 1.14+ | 1.18+ | 用于反向X_X前端静态资源 + API 转发 |
| Node.js(仅构建时) | 14.x | 16.x 或 18.x | 仅在本地或服务器构建前端时使用,生产环境无需 |
✅ 提示:若依官方示例多基于 JDK 8 + MySQL 5.7 + Redis 3.2+,建议优先匹配此组合以避免兼容问题。
二、关键配置文件修改(生产环境必读)
1. 后端 application.yml(ruoyi-system/src/main/resources/)
spring:
datasource:
url: jdbc:mysql://localhost:3306/ry_2025?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
username: root
password: your_strong_password
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
host: localhost
port: 6379
password: # 如有密码则填写
database: 0
# 关闭 Swagger(生产环境建议禁用)
swagger:
enabled: false
# 文件上传路径(务必指向真实存在目录)
upload:
path: /home/ruoyi/upload
# 允许跨域(如前后端不同域名)
cors:
allowed-origins: "*"
2. Nginx 配置(/etc/nginx/conf.d/ruoyi.conf)
server {
listen 80;
server_name your-domain.com; # 替换为实际域名或 IP
# 前端静态资源(dist 目录)
location / {
root /home/ruoyi/front/dist; # 确保该目录存在且权限正确
try_files $uri $uri/ /index.html; # SPA 路由回退
index index.html;
}
# 后端 API 接口转发(避免 CORS 问题)
location /system/ {
proxy_pass http://127.0.0.1:8080;
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;
# 超时设置(大文件上传需调大)
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 登录验证接口特殊处理(可选)
location /login {
proxy_pass http://127.0.0.1:8080/login;
}
}
🔒 安全建议:
- 生产环境关闭
debug模式- 使用 HTTPS(Let’s Encrypt 免费证书)
- 限制 Nginx 只监听必要端口
- 定期更新系统补丁
三、部署流程(以 CentOS 为例)
# 1. 安装依赖
sudo yum install -y java-1.8.0-openjdk-devel mysql-server redis nginx wget curl
# 2. 启动服务
sudo systemctl enable --now mysqld redis nginx
sudo systemctl start mysqld redis nginx
# 3. 初始化数据库
mysql -u root -p < ruoyi.sql # 替换为实际 SQL 文件路径
# 4. 编译前端(仅需一次)
cd front
npm install
npm run build:prod
# 5. 部署后端 JAR
cp ruoyi-admin/target/*.jar /home/ruoyi/app.jar
mkdir -p /home/ruoyi/upload /home/ruoyi/logs
# 6. 创建 systemd 服务
sudo tee /etc/systemd/system/ruoyi.service > /dev/null <<EOF
[Unit]
Description=RuoYi Admin Service
After=syslog.target network.target
[Service]
Type=simple
User=root
WorkingDirectory=/home/ruoyi
ExecStart=/usr/bin/java -jar app.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now ruoyi
# 7. 配置防火墙
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
四、常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 前端页面 404 | Nginx 未配置 try_files 或 dist 目录错误 |
检查 root 路径 & index.html 是否存在 |
| 后端无法连接 Redis | Redis 未启动 / 密码错误 / 防火墙拦截 | redis-cli ping 测试;检查 bind 127.0.0.1 配置 |
| 文件上传失败 | upload.path 目录无写权限 |
chmod -R 755 /home/ruoyi/upload |
| 登录页白屏 | 浏览器缓存旧 JS/CSS | 强制刷新(Ctrl+F5)或清除缓存 |
| 中文乱码 | MySQL 字符集非 utf8mb4 | ALTER DATABASE ry_2025 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; |
五、进阶建议
- ✅ 使用 Docker 部署(推荐):可一键封装所有依赖,便于迁移和备份
FROM openjdk:8-jre-alpine COPY app.jar /app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] - ✅ 日志监控:集成 ELK 或 Prometheus + Grafana 实时监控 JVM 内存、GC、QPS
- ✅ 高可用:后端多实例 + Nginx 负载均衡;Redis 哨兵模式;MySQL 主从复制
需要我提供 Docker Compose 完整部署脚本 或 自动化部署 Shell 脚本模板 吗?
云服务器