Linux服务器上从零部署RuoYi-Cloud微服务(Oracle+Nginx版)保姆级避坑指南
2026/5/11 12:42:11 网站建设 项目流程

Linux服务器上从零部署RuoYi-Cloud微服务(Oracle+Nginx版)保姆级避坑指南

当企业级应用需要兼顾国产化适配与高性能架构时,RuoYi-Cloud微服务框架配合Oracle数据库的方案正成为越来越多技术团队的选择。本文将带您穿越从零开始部署的完整历程,特别针对Linux环境下Oracle数据库配置、Nginx反向代理优化等核心环节,提供经过实战验证的解决方案。不同于普通教程,我们重点呈现那些官方文档未曾提及的"暗礁"——从Maven依赖冲突到Nacos认证陷阱,每个环节都附带真实环境验证过的修复方案。

1. 环境准备:构建稳健的基础设施

1.1 系统资源规划建议

在开始部署前,建议准备以下最小化资源配置:

  • 服务器规格:4核CPU/8GB内存/100GB存储(物理机或云实例均可)
  • 操作系统:CentOS 7.9或Ubuntu 20.04 LTS(本文以CentOS为例)
  • 网络要求:开放端口需包含8848(Nacos)、8080(应用)、6379(Redis)、3306(MySQL)、1521(Oracle)

提示:生产环境建议将各组件部署在不同服务器,测试环境可使用单机但需注意端口分配

1.2 关键组件版本锁定

为避免兼容性问题,严格使用以下版本组合:

组件版本号备注
JDK1.8.0_291需配置JAVA_HOME环境变量
Maven3.8.1需配置阿里云镜像加速
Oracle11g R2需提前安装客户端工具
Nacos2.0.3注意持久化配置
Sentinel1.8.2控制台端口默认8718

1.3 源码获取与预处理

推荐使用Git方式获取代码仓库:

# 安装Git客户端 yum install -y git # 克隆定制版仓库(已适配Oracle) git clone https://github.com/yangzongzhuan/RuoYi-Cloud-Oracle.git cd RuoYi-Cloud-Oracle/driver/ # 处理Oracle驱动依赖 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc8 \ -Dversion=12.2.0.1 -Dpackaging=jar -Dfile=ojdbc8-12.2.0.1.jar

常见报错解决方案:

  • "Could not transfer artifact":检查Maven镜像配置
  • "Invalid JDBC driver":确认ojdbc8.jar文件路径无误
  • "Permission denied":使用sudo执行或调整目录权限

2. 数据库层深度配置

2.1 Oracle数据库初始化

执行SQL脚本前需要特别注意:

  1. 使用sysdba账户创建专用用户:
CREATE USER ruoyi IDENTIFIED BY "密码" DEFAULT TABLESPACE users; GRANT CONNECT, RESOURCE TO ruoyi; ALTER USER ruoyi QUOTA UNLIMITED ON users;
  1. 关键脚本处理技巧:
  • 修改ry_20210806.sql末尾添加/结束符
  • 按顺序执行:
    @/path/to/ry_20210806.sql @/path/to/quartz.sql

2.2 MySQL辅助数据库配置

为Nacos和Seata创建专用实例:

# 创建配置数据库 mysql -uroot -p -e "CREATE DATABASE `ry-config` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 导入初始化脚本 mysql -uroot -p ry-config < sql/ry_config_20210730.sql

典型问题排查:

  • 字符集冲突:确保使用utf8mb4而非utf8
  • 权限不足:检查账户的全局权限设置
  • 表不存在错误:确认脚本路径包含中文字符时使用引号包裹

3. 核心中间件部署实战

3.1 Nacos高可用配置

解压安装后,关键配置位于conf/application.properties

# 持久化配置(需与MySQL配置一致) spring.datasource.platform=mysql db.url.0=jdbc:mysql://localhost:3306/ry-config?useSSL=false&serverTimezone=Asia/Shanghai db.user=root db.password=yourpassword # 集群配置示例(单机模式可忽略) nacos.core.cluster.members=192.168.1.100:8848,192.168.1.101:8848

启动时常见问题:

  • 端口冲突:检查server.port是否被占用
  • 认证失败:确认ry-config库的users表存在nacos账户
  • 内存不足:修改bin/startup.sh中的JVM参数

3.2 Sentinel控制台优化

推荐使用systemd管理Sentinel服务:

# 创建服务文件 cat > /etc/systemd/system/sentinel.service <<EOF [Unit] Description=Sentinel Dashboard After=network.target [Service] Type=simple ExecStart=/usr/bin/java -Dserver.port=8718 -jar /opt/sentinel/sentinel-dashboard-1.8.2.jar Restart=on-failure [Install] WantedBy=multi-user.target EOF # 启动服务 systemctl daemon-reload systemctl enable --now sentinel

4. Nginx高级路由配置

4.1 前端静态资源部署

建议将打包后的前端文件部署到Nginx专属目录:

server { listen 80; server_name yourdomain.com; location / { root /opt/ruoyi-ui; index index.html; try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }

4.2 后端API路由优化

微服务网关的Nginx配置要点:

upstream ruoyi-gateway { server 127.0.0.1:8080 weight=5; server 192.168.1.100:8080 weight=3; keepalive 30; } server { location /api/ { proxy_pass http://ruoyi-gateway/; proxy_http_version 1.1; proxy_set_header Connection ""; } }

性能调优参数:

  • keepalive_timeout:建议设置为65秒
  • client_max_body_size:根据业务需求调整上传限制
  • gzip:启用压缩减少传输体积

5. 全链路启动验证

5.1 服务启动顺序指南

严格按以下顺序启动组件:

  1. 基础服务
    • MySQL → Redis → Oracle
  2. 中间件
    • Nacos → Sentinel → Seata
  3. 应用服务
    • 网关 → 认证 → 业务模块

5.2 健康检查方案

编写自动化验证脚本check.sh

#!/bin/bash # Nacos健康检查 curl -X GET "http://localhost:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=10" # 网关状态验证 curl -H "Authorization: Bearer xxx" http://localhost:8080/auth/user # 数据库连通性测试 sqlplus -L ruoyi/密码@localhost:1521/ORCLCDB <<EOF select sysdate from dual; EOF

6. 典型故障排除手册

6.1 依赖冲突解决方案

当出现类加载冲突时,使用Maven排除策略:

<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency>

6.2 Oracle连接池优化

application.yml中配置Druid:

spring: datasource: druid: initial-size: 5 min-idle: 5 max-active: 20 validation-query: SELECT 1 FROM DUAL test-on-borrow: true

6.3 内存溢出处理

在启动脚本中添加JVM参数:

JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"

7. 安全加固建议

7.1 敏感信息加密

使用Nacos配置加密功能:

  1. 在bootstrap.yml中添加:
nacos: config: secret-key: your-secret-key
  1. 在控制台使用"加密"按钮处理敏感配置

7.2 防火墙策略配置

仅开放必要端口:

firewall-cmd --permanent --add-port=8848/tcp firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload

7.3 日志审计方案

配置统一的日志收集:

logging.file.name=/var/log/ruoyi/gateway.log logging.level.root=info logging.level.com.ruoyi=debug

在真实生产环境中部署时,建议先通过Docker-Compose在测试环境验证所有配置。某次我在迁移到K8s环境时发现,Oracle的SID配置在容器网络中需要特别处理,这提醒我们不同环境下的配置差异需要充分测试。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询