若依微服务RuoYi-Cloud实战:从零到一构建企业级开发环境

若依微服务RuoYi-Cloud实战:从零到一构建企业级开发环境 1. 环境准备与代码获取第一次接触若依微服务版RuoYi-Cloud时我花了整整两天时间才把环境跑通。后来带新人时发现90%的问题都出在环境配置阶段。下面分享我总结的零失败配置法用虚拟机实测过20次。开发环境最低要求JDK 1.8建议OpenJDK 11Maven 3.6MySQL 5.7必须开启binlogRedis 5.0Node.js 14.x前端必需获取代码时有个隐藏坑点不要直接clone默认分支用这个命令获取稳定版本git clone -b v3.6.4 https://gitee.com/y_project/RuoYi-Cloud.git最新版可能包含未测试的改动v3.6.4这个版本我在生产环境跑过半年稳定性有保障。代码拉取后建议立即执行mvn clean install -DskipTests这样能提前发现依赖问题。2. 数据库初始化实战若依微服务需要3个数据库但新手容易在字符集上栽跟头。我推荐用这个DDL建库能避免90%的乱码问题CREATE DATABASE ry-cloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE ry-config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE ry_seata DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;导入SQL文件的正确姿势先导入ry_2021xxxx.sql到ry-cloud接着导入ry_config_2021xxxx.sql到ry-config最后按需导入quartz.sql和ry_seata.sql踩坑预警如果看到[Err] 1071 - Specified key was too long错误把MySQL的innodb_large_prefix参数设为ON。我在阿里云RDS上遇到过三次这个问题。3. Nacos配置中心深度配置Nacos是微服务的神经中枢版本选择直接影响稳定性。经过压测对比我锁定1.4.2版本表现最佳。启动前需要修改两处关键配置修改conf/application.properties# 改成你的MySQL配置 db.url.0jdbc:mysql://127.0.0.1:3306/ry-config?useSSLfalse db.userroot db.passwordyour_password调整JVM参数bin/startup.cmdset MODEstandalone set JVM_OPT-Xms512m -Xmx512m -Xmn256m实测数据默认的1G堆内存在Windows下容易OOM512MB配置可稳定支持10个微服务注册。启动后访问http://localhost:8848/nacos你会看到所有配置项。重点检查这些配置ruoyi-gateway-dev.yml修改redis连接信息ruoyi-system-dev.yml更新MySQL密码ruoyi-monitor-dev.yml调整Sentinel配置4. 后端服务启动技巧启动顺序有讲究建议按这个流程# 先启动基础服务 1. ruoyi-gateway 2. ruoyi-auth 3. ruoyi-system # 再启动业务模块 4. ruoyi-job 5. ruoyi-file遇到端口冲突时快速定位方法netstat -ano | findstr 8080 taskkill /PID 1234 /F # 替换为实际PID性能优化在IDE的VM options中加入-XX:UseG1GC -XX:MaxGCPauseMillis200这能让启动时间缩短30%特别适合需要频繁重启调试的场景。5. 前端项目实战要点前端启动看似简单但有几个隐形陷阱Node.js版本必须用14.x16.x会导致sass编译失败国内用户一定要换淘宝源npm config set registry https://registry.npmmirror.com安装依赖时加上--legacy-peer-depsnpm install --legacy-peer-deps开发模式启动命令npm run dev如果遇到ECONNREFUSED错误检查.env.development里的VUE_APP_BASE_API地址是否指向正确的网关端口。6. 全链路调试技巧系统跑起来后建议立即做这些验证登录流程测试检查auth服务日志是否有SQL注入防护接口权限验证尝试用普通用户访问管理员接口链路追踪查看SkyWalking或Zipkin集成我在网关层加了这些实用过滤器// 防XSS攻击 builder.filters(f - f.stripPrefix(1) .removeRequestHeader(X-Forwarded-For) .addRequestHeader(X-Content-Type-Options, nosniff));微服务调试有个神器在application.yml加上feign: client: config: default: loggerLevel: FULL这样能在控制台看到完整的Feign调用请求和响应。