ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

若依(RuoYi)框架从零配置指南:环境搭建、前后端启动与生产部署

若依(RuoYi)框架从零配置指南:环境搭建、前后端启动与生产部署 1. 项目概述为什么若依RuoYi值得你花时间配置如果你是一名Java开发者或者你的团队正在寻找一个能快速启动企业级后台管理系统的脚手架那么“若依RuoYi”这个名字你大概率不会陌生。它不是一个需要从零开始造轮子的框架而是一个功能完备的、开箱即用的后台管理系统解决方案。简单来说它帮你把用户权限、菜单管理、角色分配、部门管理、操作日志这些后台系统里最繁琐、最通用但又必须有的模块全都预先开发好了并且提供了清晰的前后端分离架构。那么为什么还需要一篇配置教程因为“开箱即用”往往意味着“开箱即配”。直接从GitHub上拉下来的若依代码就像一套精装修的毛坯房水电管线、墙面地板都做好了但你要住进去还得自己通水通电、配置网络、搬入家具。对于若依而言这个“通水通电”的过程就是配置数据库、Redis、项目运行环境以及前后端联调参数。这个过程看似基础却卡住了无数新手网上零散的教程要么版本过时要么语焉不详导致很多人还没体验到若依的强大就先在环境配置上败下阵来。这篇教程的目的就是充当你的“装修监理”。我不会只告诉你“这里填个数据库连接”我会拆解每一步背后的逻辑为什么需要RedisNginx在前后端分离中扮演什么角色不同的启动模式单体、微服务该如何选择我会基于最新的若依版本关注热词中的“若依微服务plus”、“ruoyi vue plus”结合我多次从零搭建若依项目的实战经验带你走通从代码下载到浏览器成功访问的全流程。无论你是想学习若依框架本身还是急需一个项目原型进行二次开发这篇超过5000字的详实指南都能让你避开我踩过的坑高效完成配置。2. 环境准备构建坚实地基的四个核心组件在开始敲任何代码之前我们必须把运行若依所需的基础环境搭建好。这就像盖房子前要打好地基、接通水电一样至关重要。根据热词中频繁出现的“mysql安装配置教程”、“git安装及配置教程”、“maven环境配置”、“nodejs安装及环境配置”我们可以确定核心依赖。这里我强烈建议即使你电脑上已有部分环境也请对照检查版本版本不匹配是后续各种诡异错误的根源。2.1 后端基石JDK、Maven与MySQLJDK (Java Development Kit)若依后端基于Java因此JDK是首要条件。我推荐使用JDK 8或JDK 11这是目前企业级Java应用最稳定、生态支持最完善的版本。若依官方文档通常也会注明兼容的JDK版本。注意请务必确认你安装的是JDK开发工具包而不仅仅是JRE运行环境。你可以通过在命令行输入java -version和javac -version来验证。如果后者报错说明只装了JRE。安装后需要配置环境变量JAVA_HOME指向你的JDK安装目录例如C:\Program Files\Java\jdk1.8.0_301并在系统的Path变量中添加%JAVA_HOME%\bin。这一步是为了让系统在任何位置都能识别java和javac命令。Maven若依使用Maven进行项目构建和依赖管理。你可以把它想象成一个超级智能的“图书馆管理员”。你的项目需要什么库依赖只需要在pom.xml文件里写清楚库的名字和版本Maven就会自动去中央仓库或你配置的镜像仓库下载并管理它们之间的依赖关系。安装Maven同样需要下载并配置环境变量MAVEN_HOME并在Path中添加%MAVEN_HOME%\bin。安装完成后在命令行运行mvn -v应能显示版本信息。这里有一个关键技巧由于网络原因直接使用Maven中央仓库可能很慢。我强烈建议你立即配置国内镜像源比如阿里云镜像。修改Maven安装目录下conf/settings.xml文件在mirrors标签内添加mirror idaliyunmaven/id mirrorOf*/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror这能极大提升后续下载依赖包的速度节省大量等待时间。MySQL若依的所有业务数据、用户信息、权限配置都存储在MySQL中。你需要安装MySQL 5.7或8.0版本。安装过程中请牢记你设置的root用户密码。安装完成后你需要为若依创建一个专用的数据库。打开MySQL命令行或客户端如Navicat、MySQL Workbench执行以下命令CREATE DATABASE ry-vue CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;这里ry-vue是数据库名你可以自定义。使用utf8mb4字符集是为了更好地支持存储Emoji等特殊字符。创建好空数据库即可若依的SQL脚本会在项目启动时自动创建表结构。2.2 前端与缓存Node.js、Redis与GitNode.js 与 npm/yarn若依的前端部分如RuoYi-Vue是基于Vue.js的因此需要Node.js环境来运行构建命令。安装Node.js时会自带包管理工具npm。我推荐安装Node.js 14.x或16.x的LTS长期支持版本。安装后可以通过node -v和npm -v检查版本。为了提高依赖安装速度和稳定性同样可以配置淘宝的NPM镜像npm config set registry https://registry.npmmirror.com此外你也可以选择安装yarn作为替代的包管理工具在某些情况下速度更快。RedisRedis是一个内存数据库在若依中扮演着至关重要的角色会话Session存储和缓存。为什么不用MySQL直接存因为像用户登录状态这种需要高频读写、且对速度要求极高的数据放在内存里比存在硬盘的数据库中要快几个数量级。安装Redis后默认会在本地的6379端口启动服务。你需要确保Redis服务是运行状态。在Windows上你可能需要下载微软维护的版本在Linux或macOS上通过包管理器安装通常更方便。GitGit用于版本控制和从代码仓库克隆若依的源代码。虽然你可以直接下载ZIP包但使用Git能更方便地切换分支、更新代码。安装Git后你可以使用命令行或图形化工具如Sourcetree、GitKraken。3. 源码获取与项目结构解析环境就绪后我们开始“取经”——获取若依的源代码。这里有一个重要的选择你需要哪个版本从热词“若依前后端分离”、“若依微服务plus”、“ruoyi vue pro(芋道)”可以看出若依生态已经衍生出多个版本。RuoYi单体应用前后端代码在一个工程里适合快速上手和小型项目。RuoYi-Vue前后端分离后端是Spring Boot前端是VueElement UI。这是目前最主流、最推荐的版本结构清晰便于前后端开发者分工。RuoYi-Cloud微服务基于Spring Cloud的微服务版本适合大型复杂系统。RuoYi-Vue-Plus在RuoYi-Vue基础上增强了更多企业级功能。对于大多数学习和中小型项目我推荐从RuoYi-Vue开始。我们以它为例。3.1 克隆代码与目录初窥打开命令行进入你准备存放代码的目录执行git clone https://gitee.com/y_project/RuoYi-Vue.git克隆完成后你会得到一个RuoYi-Vue文件夹。让我们看看里面有什么RuoYi-Vue/ ├── ruoyi-admin (后端主模块Spring Boot启动类在这里) ├── ruoyi-common (通用工具类、常量定义) ├── ruoyi-framework (核心框架模块权限、日志等核心逻辑) ├── ruoyi-generator (代码生成器模块) ├── ruoyi-quartz (定时任务模块) ├── ruoyi-system (系统功能模块用户、角色、菜单等) ├── ruoyi-ui (前端Vue项目) ├── sql/ (数据库初始化脚本) └── pom.xml (Maven总父工程配置文件)这个结构是典型的多模块Maven项目。ruoyi-admin是入口它依赖其他模块。ruoyi-ui是一个独立的Vue项目。3.2 关键配置文件定位后端的“控制中枢”配置的核心在于修改几个关键的配置文件告诉若依你的数据库在哪里、Redis在哪里、服务器怎么跑。数据库配置找到/ruoyi-admin/src/main/resources/application-druid.yml。Druid是阿里巴巴开源的数据库连接池。你需要修改以下部分# 数据源配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/ry-vue?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: root password: 你的密码将url中的数据库名ry-vue、username和password替换成你实际的信息。serverTimezoneGMT%2B8设置了东八区时区避免时间错误。Redis配置找到/ruoyi-admin/src/main/resources/application.yml。这是主配置文件里面有很多配置项我们找到Redis部分# redis 配置 redis: # 地址 host: localhost # 端口默认为6379 port: 6379 # 数据库索引 database: 0 # 密码没有密码则留空 password: # 连接超时时间 timeout: 10s如果你的Redis设置了密码就在这里填写。如果Redis不在本机修改host为对应的IP地址。后端服务端口在同一个application.yml文件中你可以找到server: # 服务器的HTTP端口 port: 8080端口8080是后端API服务监听的端口。如果这个端口被占用你可以修改为其他端口例如8081。实操心得在修改配置前我习惯先复制一份原文件做备份。另外YAML格式对缩进非常敏感必须使用空格不能使用Tab键。一个缩进错误就可能导致配置不生效。4. 后端启动与数据库初始化配置修改无误后我们就可以启动后端了。4.1 通过Maven编译与打包首先在项目根目录有pom.xml的目录打开命令行运行Maven编译命令mvn clean compile这个命令会清理旧的编译文件然后下载所有依赖并编译项目。第一次运行会花费较长时间因为要下载大量依赖包。如果配置了阿里云镜像速度会快很多。编译成功后我们可以直接运行也可以先打包。在开发阶段直接运行更高效。进入ruoyi-admin模块运行mvn spring-boot:run或者在IDE如IntelliJ IDEA中直接找到RuoYiApplication这个启动类点击运行。当你看到控制台打印出巨大的若依RuoYi字样并且没有报错最后出现类似Started RuoYiApplication in 12.345 seconds (JVM running for 13.567)的日志时恭喜你后端启动成功了4.2 SQL脚本执行与数据验证后端启动时若依的初始化机制会自动执行一些建表操作。但初始的菜单、部门等基础数据需要我们手动导入。这就是sql目录下脚本的作用。找到sql目录里面通常有多个脚本例如quartz.sql定时任务表、ry_2023xxxx.sql主业务数据。你需要按照一定的顺序执行先执行建表脚本如果项目启动时没有自动建表可能需要手动执行ry-vue.sql但现代Spring Boot项目通常通过JPA或MyBatis-Plus的自动建表功能或Flyway/Liquibase完成。然后执行数据初始化脚本如ry_2023xxxx.sql。你可以在MySQL客户端中选中你创建的ry-vue数据库然后执行这些SQL文件。执行完毕后打开浏览器访问http://localhost:8080如果你修改了端口则替换为对应的端口。你应该能看到一个JSON格式的响应或者一个简单的页面这表明后端API服务已经在正常运行。此时你可以尝试访问后端的一个健康检查接口例如http://localhost:8080/或http://localhost:8080/doc.html如果集成了Swagger/Knife4j接口文档。看到接口文档页面是后端配置成功的一个明确标志。5. 前端配置、启动与联调后端跑通了现在我们来让前端页面“活”起来。5.1 前端依赖安装与配置进入ruoyi-ui目录这里是前端Vue项目。首先安装项目依赖npm install # 或使用 yarn yarn install这个过程会读取package.json文件下载所有前端依赖包到node_modules目录。同样网络状况会影响速度确保你的npm镜像已配置。安装完成后最关键的一步是配置前端向后端发送请求的地址。找到ruoyi-ui/.env.development文件这是开发环境配置文件。你会看到类似下面的内容# 开发环境配置 ENV development # 开发环境API地址 VUE_APP_BASE_API /dev-api这个配置需要结合前端的代理设置来理解。在开发时前端运行在独立的服务器如localhost:80后端运行在另一个端口如localhost:8080。由于浏览器同源策略的限制前端直接请求localhost:8080会产生跨域问题。解决方案是配置一个代理。打开ruoyi-ui/vue.config.js文件找到devServer配置项devServer: { host: 0.0.0.0, port: port, open: true, proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { target: http://localhost:8080, changeOrigin: true, pathRewrite: { [^ process.env.VUE_APP_BASE_API]: } } }, // ... }这里的逻辑是当前端请求以/dev-api开头的接口时由VUE_APP_BASE_API定义开发服务器会自动将这个请求代理到target指定的地址即http://localhost:8080并且将路径中的/dev-api前缀重写掉。所以前端代码里写的请求/dev-api/login实际上会被转发到http://localhost:8080/login。你需要确保这里的target的端口8080与你后端实际运行的端口一致。5.2 启动前端服务与登录验证配置完成后在ruoyi-ui目录下运行启动命令npm run dev # 或 yarn dev控制台会输出前端服务运行的地址通常是http://localhost:80。打开浏览器访问这个地址你应该能看到若依的登录页面。默认的系统管理员账号是admin密码是admin123。输入后点击登录。如果一切配置正确你会成功跳转到系统主页。如果登录失败并提示“验证码错误”或“用户不存在/密码错误”请按以下步骤排查检查Redis确保Redis服务正在运行。登录失败信息通常缓存在Redis中如果Redis没开可能导致验证码生成或校验失败。检查控制台打开浏览器的开发者工具F12切换到“网络(Network)”标签页查看登录请求的响应。如果请求返回404或500错误说明前后端连接有问题。重点看请求的URL是否正确代理到了后端地址。检查后端日志查看启动后端服务的控制台是否有关于登录查询的SQL报错可能是数据库连接或用户表数据问题。成功登录并看到完整的后台管理界面是前后端联调成功的终极标志。至此一个完整的若依开发环境已经在你本地运行起来了。6. 生产环境部署核心配置Nginx与打包本地开发跑通了但最终项目要上线。生产环境的配置与开发环境有显著不同核心在于前后端分离部署和去除开发依赖。6.1 后端打包生成可独立运行的JAR在后端项目根目录运行Maven打包命令mvn clean package -DskipTests-DskipTests参数表示跳过单元测试加快打包速度。命令执行成功后会在ruoyi-admin/target目录下生成一个ruoyi-admin.jar文件。这个JAR包是“可执行”的它内嵌了Tomcat服务器。你只需要在有JDK环境的服务器上运行java -jar ruoyi-admin.jar就能启动服务。生产环境的配置文件需要区分。通常我们会使用application-prod.yml来覆盖开发配置。你需要创建这个文件并设置生产环境的数据库地址、Redis地址通常是服务器内网IP、以及关闭一些开发工具如Swagger# application-prod.yml spring: profiles: prod # 数据源配置生产库地址 datasource: url: jdbc:mysql://生产数据库IP:3306/ry-vue?useSSLfalseserverTimezoneAsia/Shanghai username: prod_username password: prod_password # Redis配置生产Redis地址 redis: host: 生产RedisIP password: prod_redis_password # 关闭Swagger文档 knife4j: enable: false启动时通过--spring.profiles.activeprod参数指定使用生产配置java -jar ruoyi-admin.jar --spring.profiles.activeprod6.2 前端打包生成静态资源进入ruoyi-ui目录运行构建命令npm run build:prod # 或 yarn build:prod这个命令会进行代码压缩、优化最终在ruoyi-ui/dist目录下生成一堆静态文件HTML、CSS、JS。这些文件不能再通过npm run dev的方式运行它们需要被一个HTTP服务器托管比如Nginx。6.3 Nginx配置前后端的“交通警察”Nginx在这里扮演两个角色1. 作为Web服务器托管前端静态文件2. 作为反向代理服务器将API请求转发给后端Java服务。一个典型的生产环境Nginx配置片段如下server { listen 80; server_name your-domain.com; # 你的域名或IP # 1. 托管前端静态资源 location / { root /home/www/ruoyi-ui/dist; # 前端dist目录的绝对路径 index index.html index.htm; try_files $uri $uri/ /index.html; # 支持Vue Router的history模式 } # 2. 代理后端API请求 location /prod-api/ { # 生产环境API前缀对应前端.production.env配置的VUE_APP_BASE_API proxy_pass http://localhost: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; } # 可选静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control public, immutable; } }这个配置的意思是当用户访问http://your-domain.com时Nginx会返回dist/index.html。当前端代码请求/prod-api/login时Nginx会把这个请求转发给本机8080端口运行的后端JAR包。你需要将前端ruoyi-ui目录下的.env.production文件中的VUE_APP_BASE_API改为/prod-api与Nginx配置匹配。避坑指南这里最容易出错的就是前后端请求路径的匹配。务必保证三点1. 前端打包时使用的API基础地址.env.production2. Nginx配置中location的匹配路径3. 后端是否有统一的应用上下文路径server.servlet.context-path。三者必须保持逻辑一致否则就会出现404错误。7. 进阶配置与常见问题排查基础配置完成后你可能还会遇到一些特定需求或问题。这里分享几个高频的进阶配置点和排查思路。7.1 文件上传路径配置若依的默认文件上传是传到项目运行目录下的。这在生产环境是不合适的因为每次重新部署JAR包旧的文件就会被清理。你需要将其改为绝对路径。在application.yml中修改或新增在application-prod.yml# 文件上传路径配置 ruoyi: profile: /home/ruoyi/uploadPath # Linux示例 # 或者 Windows示例: D:/ruoyi/uploadPath同时你需要配置Nginx让用户能通过HTTP访问到这些上传的文件location /profile/ { proxy_pass http://localhost:8080/; # 如果文件由后端直接提供 # 或者使用 alias如果文件存储在磁盘目录 # alias /home/ruoyi/uploadPath/; expires 30d; }7.2 登录验证码不显示或报错这是一个非常常见的问题根本原因几乎都与Redis有关。检查Redis服务首先用redis-cli ping命令确认Redis服务是否真的在运行且可连接。检查Redis配置确认application.yml中的host、port、password如果有完全正确。生产环境和本地环境配置不同。检查依赖确保pom.xml中包含了spring-boot-starter-data-redis依赖。查看日志在后端启动日志中搜索“Redis”关键词看连接是否成功。登录时查看控制台是否有关于缓存操作的报错。7.3 前端打包后页面空白或资源404检查资源路径前端打包后静态资源JS/CSS的引用路径可能不对。在vue.config.js中检查publicPath配置。如果项目部署在网站根路径如http://domain.com/设为‘/’如果部署在子路径如http://domain.com/ruoyi/则需要设为‘/ruoyi/’。检查Nginx的root和try_files确保Nginx配置中的root指向了正确的dist目录并且try_files $uri $uri/ /index.html;这行配置存在用于支持Vue Router的history模式。浏览器控制台报错打开浏览器开发者工具查看“控制台(Console)”和“网络(Network)”标签页任何红色的报错和404的请求都会给你明确的线索。7.4 关于“若依微服务plus”与版本选择从热词可以看出社区对“若依微服务plus”关注度很高。这通常指的是基于Spring Cloud Alibaba的微服务版本它引入了Nacos服务注册与配置中心、Sentinel流量控制、Seata分布式事务等组件架构更复杂但也更适用于大型分布式系统。对于初学者或中小项目我的建议是不要一开始就上微服务版本。微服务引入了巨大的复杂度包括服务拆分、通信、一致性等问题。你应该先从RuoYi-Vue前后端分离单体架构入手彻底掌握其配置、开发和部署。当你的业务确实发展到单机应用无法承载并且团队具备相应的运维和开发能力时再考虑迁移到微服务架构。那时你对基础版本的理解将是你学习微服务版本最宝贵的财富。配置若依的过程本质上是在理解一个现代Java Web应用的标准技术栈是如何协同工作的。每一步配置的背后都是一个技术组件的职责与边界。当你按照这份指南一步步看到登录页面成功展现时你收获的不仅仅是一个可运行的系统更是一张通往企业级应用开发的地图。剩下的就是在这张坚实的地图上开始构建属于你自己的业务功能了。如果在后续开发中遇到更深层次的问题比如热词中提到的“ruoyi分页排序sql注入”、“权限控制”原理那将是另一个值得深入探讨的话题了。
返回列表