洛依微服务后台管理系统


项目地址
https://gitee.com/y_project/RuoYi-Cloud

系统部署

安装必要软件

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.5.0 (推荐5.7版本)
Redis >= 3.0     (这个是一个键值数据库)
Maven >= 3.0
Node >= 10
nacos >= 1.1.0 (Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。)
下载地址:https://github.com/alibaba/nacos/releases
注意,这个nacos如果显示无法启动tomcat,那么我们就修改startup.cmd命令,修改mode为单机部署
set MODE="standalone"
sentinel >= 1.6.0

后端部署

1.先从码云上下把源码克隆下来

2.用idea打开项目,然后idea会自动伴你下载依赖

3.创建数据库ry-cloud并导入数据脚本ry_2020520.sql(必须),quartz.sql(可选)

4.创建数据库ry-config并导入数据脚本ry_config.sql(必须)

5.配置nacos持久化,修改conf/application.properties文件,增加支持mysql数据源配置
为了方便起见,我直接把nacos放到项目路径里去了

然后修改conf目录下的application.properties, 把这些东西取消注释

自己修改用户名和密码(数据库名字也要改)

# db mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=password

配置修改好了之后就可以进入bin文件,双击startup.cmd启动,启动成功后访问http://127.0.0.1:8848/nacos/index.html。进入nacos的配置列表

6.修改配置文件
我们需要修改ruoyi-system-dev.yml和ruoyi-job-dev.yml。修改里面的数据库配置

7.启动项目
依赖下载好后我们进入service里面点击启动,把所有的微服务全部启动即可

8.配置Sentinel
自己到github上面下载jar包
https://github.com/alibaba/Sentinel
为了方便起见我也放在这个项目里面

startup.cmd文件内容如下

java -jar -Xmx1024M  -Dserver.port=8718 sentinel-dashboard-1.8.0.jar

我们启动这个文件,然后访问http://localhost:8718/

前端部署

1.前端源码就在这个项目的 ruoyi-ui里面

2.我们用webstorm打开,然后使用 npm install安装依赖

3.安装好了直接运行即可

最后项目启动成功

项目介绍

核心技术介绍

1.springboot

Spring Boot是一款开箱即用框架,提供各种默认配置来简化项目配置。让我们的Spring应用变的更轻量化、更快的入门。 在主程序执行main函数就可以运行。你也可以打包你的应用为jar并通过使用java -jar来运行你的Web应用。它遵循”约定优先于配置”的原则, 使用SpringBoot只需很少的配置,大部分的时候直接使用默认的配置即可。可以与Spring Cloud的微服务无缝结合。

2.springcloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发, 如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来, 通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

3.Spring Security

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

4.redis

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库。从2015年6月开始,Redis的开发由Redis Labs赞助,而2013年5月至2015年6月期间,其开发由Pivotal赞助。在2013年5月之前,其开发由VMware赞助。

5.nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

6.Sentinel

Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。

7.vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

8.微服务

微服务 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 的 API 集相互通信

后端详细介绍

整体介绍

整个项目主要使用了下面这几个依赖

1.SpringCloud 微服务

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2.SpringCloud Alibaba 微服务

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

3.SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

4.Spring Boot Admin

Spring Boot Admin是一个Web应用程序,用于管理和监视Spring Boot应用程序。每个应用程序都被视为客户端,并注册到管理服务器。底层能力是由Spring Boot Actuator端点提供的。

5.Mybatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

6.Swagger

Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起使用,以设计,构建,记录和使用RESTful Web服务。Swagger包括自动文档,代码生成和测试用例生成

7.验证码插件

8.分页插件

9.excel工具

代码框架介绍

com.ruoyi   
├── ruoyi-ui              // 前端框架 [80]
├── ruoyi-gateway         // 网关模块 [8080]
├── ruoyi-auth            // 认证中心 [9200]
├── ruoyi-api             // 接口模块
│       └── ruoyi-api-system                          // 系统接口
├── ruoyi-common          // 通用模块
│       └── ruoyi-common-core                         // 核心模块
│       └── ruoyi-common-datascope                    // 权限范围
│       └── ruoyi-common-log                          // 日志记录
│       └── ruoyi-common-redis                        // 缓存服务
│       └── ruoyi-common-security                     // 安全模块
│       └── ruoyi-common-swagger                      // 系统接口
├── ruoyi-modules         // 业务模块
│       └── ruoyi-system                              // 系统模块 [9201]
│       └── ruoyi-gen                                 // 代码生成 [9202]
│       └── ruoyi-job                                 // 定时任务 [9203]
├── ruoyi-visual          // 图形化管理模块
│       └── ruoyi-visual-monitor                      // 监控中心 [9100]
├──pom.xml                // 公共依赖

rouyi-ui

这个文件夹里面存放的是前端的项目代码,这个项目代码已经在前端详细介绍里面会说明,这里就不在继续解释了

ruoyi-gateway

这个是若依的网关微服务模块。在介绍这个模块之前,我简单说一下网关的作用

网关主要负责下面几个功能

1.智能路由:接收外部一切请求,并转发到后端的对外服务open-service上去;

2.权限校验:只校验用户向open-service服务的请求,不校验服务内部的请求

3.API监控:只监控经过网关的请求,以及网关本身的一些性能指标(例如,gc等)

4.限流:与监控配合,进行限流操作;

5.API日志统一收集:类似于一个aspect切面,记录接口的进入和出去时的相关日志。

若依的网关部分结构如下

这个网关部分,主要的功能包括生成验证码,权限认证,黑名单过滤,限流,生成swageer文档。

ruoyi-auth

这个模块主要用于用户的身份认证,代码结构如下

这个模块的主要作用就是用户用户的登录认证和token生成,接口比较少

ruoyi-api

这个模块主要是对外提供接口的模块,代码接口如下所示

这个domain就是各种实体类,各种表的数据都存放在这里

model文件夹存放的是用户信息的模型。

ruoyi-common-core

这个文件夹是整个微服务的核心,里面单独分了很多模块

core是核心模块,datascope是权限范围,log是日志记录模块,redis是缓存的处理,security是安全模块,swagger是接口文档相关的模块

这个模块里面存放的一些核心的库,包括excel注解,常量,异常处理,工具类和控制层

ruoyi-common-datascope

这里权限范围的微服务处理框架,这里主要负责权限认定

ruoyi-common-log

这个是负责日志记录的模块,annotation是日志的注解,aspect是切面的函数,enums是日志的枚举类型,service是日志模块对外提供的服务

ruoyi-common-redis

这个模块复制操作redis数据库,可以进行数据库的读取和存储操作

ruoyi-common-security

这个模块是负责安全部分,主要负责token认证,权限鉴定,代码结构如下

ruoyi-common-security

这个模块负责swagger的配置,代码结构如下所示

ruoyi-modules

主要包括下面这几个模块

gen负责任务生成,job是定时任务,system是系统模块

ruoyi-modules-gen

这个模块负责代码生成

ruoyi-modules-job

这个模块用于定时任务

ruoyi-modules-system

这个是整个系统模块,主要负责处理系统的各个信息和接口处理

ruoyi-visual

这个模块用于图形化模块管理

前端详细介绍

代码框架介绍

├── build                      // 构建相关  
├── bin                        // 执行脚本
├── public                     // 公共文件
│   ├── favicon.ico            // favicon图标
│   └── index.html             // html模板
├── src                        // 源代码
│   ├── api                    // 所有请求
│   ├── assets                 // 主题 字体等静态资源
│   ├── components             // 全局公用组件
│   ├── directive              // 全局指令
│   ├── layout                 // 布局
│   ├── router                 // 路由
│   ├── store                  // 全局 store管理
│   ├── utils                  // 全局公用方法
│   ├── views                  // view
│   ├── App.vue                // 入口页面
│   ├── main.js                // 入口 加载组件 初始化等
│   ├── permission.js          // 权限管理
│   └── settings.js            // 系统配置
├── .editorconfig              // 编码格式
├── .env.development           // 开发环境配置
├── .env.production            // 生产环境配置
├── .env.staging               // 测试环境配置
├── .eslintignore              // 忽略语法检查
├── .eslintrc.js               // eslint 配置项
├── .gitignore                 // git 忽略项
├── babel.config.js            // babel.config.js
├── package.json               // package.json
└── vue.config.js              // vue.config.js

bin

这个bin目录下的是执行脚本,里面有三个bat文件,主要作用就是用来构建和编译代码的

build

这个目录下只有一个index.js文件,主要是用于预览我们构建好的文件,核心代码如下

public

这个目录主要是放一些公共的资源文件他这里只加了一个图标和index.html文件

src

这个目录是vue项目的主要资源目录,所有的核心代码和资源文件都放在这里

这里我一个个来介绍

api

这个目录主要用于存放接口文件,所有接口请求都放在这里文件夹

一个模块用一个文件夹来进行包含,我这里举一个例子来说明

import request from '@/utils/request'

// 查询登录日志列表
export function list(query) {
  return request({
    url: '/system/logininfor/list',
    method: 'get',
    params: query
  })
}

这个import引入的是request请求函数,然后我们指定请求的url请求方式和请求的参数。

assets

这个文件夹主要用于存放资源文件,主要存放图片或者css文件

components

这个文件夹用于存放各种公用的组件,每个组件都是驼峰法命名

directive

这个文件夹用于存放全局指令,这个文件夹下面只有三个文件,主要作用就是用于权限认证

比如下面这个在创建新组件的时候回进行权限认证,如果没有权限就不能创建组件

layout

这个文件夹用于存放页面的各种布局文件

components文件夹用于存放各种组件,mixin文件夹用于存放混入文件。这个文件夹的主要作用就是存放各种页面的布局文件以及相关组件。

router

这个文件夹存放的是路由文件,这个文件夹只有一个文件,主要负责路由的映射

store

这个文件夹用于存放vuex状态管理文件,vuex采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。这个文件夹主要的作用就是存储组件的状态数据。

utils

这个文件夹用于存放一些通用的函数,每个模块都单独搞了一个js文件

比如,下面这个函数的作用就是用于表格模块的时间初始化

views

这个文件夹主要用于存放视图文件也就是界面文件,我们存放的各种界面组件都在这里。大概结构如下图所示

其他的几个文件

这个APP.vue文件是主页的入口,mian.js是主页的配置文件,用于引入各种组件和vuex

permission.js用于权限判断,用于判断用户是否登录过本系统,部分代码如下图所示


文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录