1. 环境准备与基础配置
在Linux环境下部署RuoYi-Cloud微服务项目,首先需要做好基础环境准备。我曾在多个生产环境中部署过这套系统,发现前期准备工作是否充分直接决定了后续部署的顺利程度。这里我会分享一些容易被忽略的细节。
1.1 技术选型与版本匹配
RuoYi-Cloud-Oracle版本的技术栈组合需要特别注意版本兼容性。根据实战经验,推荐以下组合:
| 组件 | 推荐版本 | 关键说明 |
|---|---|---|
| Spring Boot | 2.5.3 | 微服务基础框架 |
| Oracle JDBC驱动 | ojdbc8-12.2.0.1 | 必须与Oracle版本匹配 |
| Nginx | 1.9.9+ | 需要支持WebSocket代理 |
| Oracle数据库 | 11g/12c | 需配置正确的字符集(AL32UTF8) |
特别提醒:Oracle的ojdbc驱动版本必须严格匹配,否则会出现难以排查的连接问题。我曾遇到过驱动版本不匹配导致的CLOB字段读取异常,耗费半天时间才定位到问题。
1.2 源码获取与依赖安装
获取源码时推荐使用Git方式克隆仓库:
git clone https://github.com/yangzongzhuan/RuoYi-Cloud-Oracle.git cd RuoYi-Cloud-Oracle/driver/安装Oracle驱动到本地Maven仓库是个关键步骤,很多新手会忽略:
mvn install:install-file \ -DgroupId=com.oracle \ -DartifactId=ojdbc8 \ -Dversion=12.2.0.1 \ -Dpackaging=jar \ -Dfile=ojdbc8-12.2.0.1.jar踩坑提醒:如果使用公司内网环境,记得先配置Maven镜像源。我常用阿里云镜像,在settings.xml中添加:
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>2. Oracle数据库深度配置
2.1 数据库安装与调优
Oracle在Linux下的安装有几点需要特别注意:
- 内存分配:建议至少4GB内存,设置合理的SGA/PGA比例
- 表空间规划:为RuoYi单独创建表空间,避免使用SYSTEM表空间
- 字符集设置:必须使用AL32UTF8,否则会出现中文乱码
创建表空间的SQL示例:
CREATE TABLESPACE ruoyi_data DATAFILE '/oracle/oradata/ruoyi01.dbf' SIZE 500M AUTOEXTEND ON;2.2 执行初始化脚本
执行SQL脚本前有个关键步骤:修改ry_20210806.sql文件末尾,添加斜杠/。这是Oracle SQL*Plus的特殊要求,PL/SQL Developer也需要这个符号才能正确识别存储过程。
常见问题排查:
- ORA-00911错误:检查SQL语句是否以分号结尾
- ORA-06512错误:通常是存储过程编译错误,检查日志定位问题行
- 中文乱码:确认数据库字符集和服务端NLS_LANG设置一致
3. Nginx高级配置技巧
3.1 反向代理配置
Nginx配置微服务时需要特别注意WebSocket支持,这是RuoYi-Cloud监控功能的关键。以下是核心配置片段:
location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # WebSocket支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 3600s; }3.2 负载均衡策略
对于生产环境,建议采用加权轮询策略:
upstream backend { server 192.168.1.101:8080 weight=5; server 192.168.1.102:8080 weight=3; server 192.168.1.103:8080 weight=2; keepalive 32; # 保持长连接 }性能调优参数:
- worker_processes:设置为CPU核心数
- worker_connections:建议1024-4096
- keepalive_timeout:适当增大减少连接建立开销
4. 服务组件联调实战
4.1 Nacos特殊配置
Oracle版需要特别注意Nacos的数据库配置。在application.properties中:
# 使用MySQL而非Derby spring.datasource.platform=mysql db.url.0=jdbc:mysql://localhost:3306/ry-config?useSSL=false&serverTimezone=UTC常见登录问题排查:
- 检查ry-config库的users表是否有nacos/nacos账户
- 确认MySQL连接参数正确
- 查看logs/start.out日志文件
4.2 Sentinel流量控制
Sentinel控制台启动后,需要在每个微服务应用中配置:
spring: cloud: sentinel: transport: dashboard: localhost:8718 port: 8719 # 每个应用需要不同端口生产环境建议:
- 配置持久化规则到Nacos
- 设置合理的QPS阈值
- 启用热点参数限流
5. 部署验证与监控
5.1 全链路测试方案
建议按照以下顺序验证:
- 直接访问Oracle验证基础数据
- 单独访问各微服务接口
- 通过Nginx代理访问
- 测试登录和权限功能
- 验证监控端点
5.2 性能监控配置
Spring Boot Admin的Oracle版特殊配置:
# 监控端点配置 management.endpoints.web.exposure.include=* management.endpoint.health.show-details=always关键监控指标:
- 数据库连接池使用情况
- JVM内存和GC状态
- 接口响应时间P99
- 微服务间调用链路
在实际项目中,这套配置方案已经稳定支持了日均百万级请求的系统。记得定期检查Oracle的AWR报告和Nginx的access.log,这些日志能帮助发现潜在性能瓶颈。