若依(RuoYi)管理系统是一个基于 Spring Boot、MyBatis 和 Vue 的流行开源框架,将其部署到生产服务器需要做好操作系统环境、中间件依赖、数据库配置以及项目本身的准备工作。
以下是标准的部署配置清单及关键步骤:
1. 基础运行环境
这是最核心的部分,若依后端对 Java 版本有严格要求。
- JDK 版本:
- RuoYi-Vue (前后端分离版):通常要求 JDK 1.8 或 JDK 17(取决于具体分支)。如果是较新的
ruoyi-vue-pro或ruoyi-cloud版本,可能强制要求 JDK 17。建议统一使用 JDK 1.8(如 OpenJDK 1.8.0_xxx)以兼容大多数旧版教程,或根据文档指定版本。 - 安装检查:在终端输入
java -version确认版本无误。
- RuoYi-Vue (前后端分离版):通常要求 JDK 1.8 或 JDK 17(取决于具体分支)。如果是较新的
- Maven:
- 用于打包项目。推荐使用 Maven 3.6+。
- 配置注意:需配置阿里云镜像提速下载依赖,并修改
settings.xml中的本地仓库路径。
- Node.js(仅前端构建需要):
- 若依的前端(Vue)需要编译打包。推荐 Node.js 14.x 或 16.x LTS 版本。
- 用于执行
npm install和npm run build:prod。
2. 数据库配置 (MySQL)
若依默认使用 MySQL 作为数据存储。
- MySQL 版本:推荐 5.7 或 8.0。
- 注意:MySQL 8.0 默认密码插件为
caching_sha2_password,若连接报错需调整驱动或用户权限。
- 注意:MySQL 8.0 默认密码插件为
- 字符集与排序规则:
- 必须设置为 utf8mb4 和 utf8mb4_general_ci,否则中文会乱码。
- SQL 初始化脚本位于
ruoyi-admin/src/main/resources/db/目录下。
- 权限管理:
- 创建一个专用数据库用户,赋予该用户对特定数据库的
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP权限,严禁使用 root 账号直接连接应用。
- 创建一个专用数据库用户,赋予该用户对特定数据库的
3. 服务器系统与安全配置
- 操作系统:CentOS 7/8, Ubuntu 20.04/22.04 等主流 Linux 发行版。
- 防火墙:
- 开放必要端口:
- 9200 (若依默认后端端口,可自定义)。
- 80/443 (Nginx 反向X_X端口)。
- 22 (SSH)。
- 关闭不必要的端口,防止暴力破解。
- 开放必要端口:
- 安全加固:
- 修改 SSH 默认端口(可选但推荐)。
- 配置 Fail2Ban 防止 SSH 爆破。
- 定期更新系统补丁。
4. Web 服务器与反向X_X (Nginx)
生产环境不建议直接使用 Tomcat 或 Spring Boot 内置容器对外暴露,应通过 Nginx 进行反向X_X,以提升性能、处理静态资源和 SSL 加密。
- Nginx 配置要点:
- 静态资源映射:将前端
dist目录下的文件映射到/usr/share/nginx/html或直接指向构建后的路径。 - 后端转发:将 API 请求(如
/system/*,/job/*)转发到 Spring Boot 应用的地址(如http://127.0.0.1:9200)。 - WebSocket 支持:若依涉及实时通知,需在 Nginx 中配置 WebSocket 升级头 (
Upgrade和Connection)。 - Gzip 压缩:开启 Gzip 减小传输体积。
- SSL/HTTPS:配置 Let’s Encrypt 证书,强制 HTTP 跳转 HTTPS。
- 静态资源映射:将前端
5. 项目配置文件修改
在部署前,必须修改 application.yml (或 application-dev.yml) 中的关键参数,使其适应生产环境:
server:
port: 9200 # 生产环境建议修改非默认端口,增加安全性
spring:
datasource:
url: jdbc:mysql://localhost:3306/ry_2024?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
username: ruoyi_user
password: StrongPassword123! # 不要使用弱口令
driver-class-name: com.mysql.cj.jdbc.Driver
# 若依特有的缓存配置 (Redis)
redis:
host: localhost
port: 6379
password: "" # 生产环境务必设置 Redis 密码
database: 0
6. 其他可选中间件
- Redis:若依默认使用 Redis 做缓存和 Session 存储。如果生产环境数据量大,建议单独部署 Redis 集群或主从架构。
- MinIO / OSS:若依的文件上传功能默认使用本地磁盘。生产环境强烈建议对接对象存储(如 MinIO、阿里云 OSS、七牛云),避免服务器磁盘爆满且便于扩展。
7. 部署流程总结
- 准备环境:安装 JDK, Maven, Node, MySQL, Redis, Nginx。
- 初始化数据库:导入 SQL 脚本,创建表结构和初始字典数据。
- 编译后端:
cd ruoyi-admin mvn clean package -DskipTests生成
ruoyi-admin.jar。 - 编译前端:
cd ruoyi-ui npm install npm run build:prod生成
dist文件夹。 - 启动服务:
- 后端:
nohup java -jar ruoyi-admin.jar --spring.profiles.active=prod & - 或使用 Supervisor/Systemd 管理进程自启。
- 后端:
- 配置 Nginx:编写
nginx.conf,重启 Nginx。 - 验证:访问域名,测试登录、API 调用及文件上传功能。
⚠️ 重要安全提示
- 禁止公网直接暴露后端端口:Spring Boot 默认端口(如 9200)不要直接暴露在 80/443,务必通过 Nginx X_X。
- 敏感信息脱敏:确保
application.yml中的数据库密码、Redis 密码不包含在 Git 仓库中(使用.gitignore忽略,或改用环境变量注入)。 - 定时任务清理:生产环境建议在 Nginx 或应用层配置日志切割策略,防止日志文件撑爆磁盘。
CLOUD技术博