RouYi-Cloud平台

1、项目启动

(1)环境准备

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 12
nacos >= 1.1.0 (ruoyi-cloud >= 3.0.0需要下载nacos >= 2.x.x版本)
sentinel >= 1.6.0

(2)后台运行

  • 启动本地的Nacos2.1:startup.cmd -m standalone

若依启动 redisson 若依启动需要redis和nacos么_数据库

若依启动 redisson 若依启动需要redis和nacos么_若依启动 redisson_02

  • 启动本地的Redis服务

若依启动 redisson 若依启动需要redis和nacos么_分布式_03

若依启动 redisson 若依启动需要redis和nacos么_java_04

1、前往Gitee下载页面(https://gitee.com/y_project/RuoYi-Cloud (opens new window))下载解压到工作目录 2、导入到项目到idea中。 3、创建数据库ry-cloud并导入数据脚本ry_2021xxxx.sql(必须),quartz.sql(可选) 4、创建数据库ry-config并导入数据脚本ry_config_2021xxxx.sql(必须) 5、配置nacos持久化,修改conf/application.properties文件,增加支持mysql数据源配置

# 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&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456

提示

配置文件application.properties是在下载的nacos-server包conf目录下。 最新RuoYi-Cloud版本>=3.0.0需要下载的nacos-server必须>=2.x.x版本。 默认配置单机模式,nacos集群/多集群部署模式参考 (Nacos支持三种部署模式 (opens new window))

6、打开运行基础模块(启动没有先后顺序)

  • RuoYiGatewayApplication (网关模块 必须)
  • RuoYiAuthApplication (认证模块 必须)
  • RuoYiSystemApplication (系统模块 必须)
  • RuoYiMonitorApplication (监控中心 可选)
  • RuoYiGenApplication (代码生成 可选)
  • RuoYiJobApplication (定时任务 可选)
  • RuoYFileApplication (文件服务 可选)

若依启动 redisson 若依启动需要redis和nacos么_java_05

若依启动 redisson 若依启动需要redis和nacos么_分布式_06

7、集成seata分布式事务(可选配置,默认不启用)

创建数据库ry-seata并导入数据脚本ry_seata_2021xxxx.sql

(3)前端运行

# 进入项目目录
cd ruoyi-ui

# 安装依赖
npm install

# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npmmirror.com

# 本地开发 启动项目
npm run dev

若依启动 redisson 若依启动需要redis和nacos么_分布式_07

打开浏览器,输入:(http://localhost:80 (opens new window)) 默认账户/密码 admin/admin123) 若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功

若依启动 redisson 若依启动需要redis和nacos么_若依启动 redisson_08

2、登录实现

(1)生成验证码

1、前端代码实现
  • 基本思路

后端生成一个表达式:6+2=8

1+1=?@2

1+1=?转成图片,传到前端展示

8 存入到Redis中

若依启动 redisson 若依启动需要redis和nacos么_分布式_09

若依启动 redisson 若依启动需要redis和nacos么_若依启动 redisson_10

若依启动 redisson 若依启动需要redis和nacos么_java_11

若依启动 redisson 若依启动需要redis和nacos么_springcloud_12

  • 代码实现

若依启动 redisson 若依启动需要redis和nacos么_java_13

若依启动 redisson 若依启动需要redis和nacos么_数据库_14

若依启动 redisson 若依启动需要redis和nacos么_数据库_15

若依启动 redisson 若依启动需要redis和nacos么_java_16

若依启动 redisson 若依启动需要redis和nacos么_分布式_17

若依启动 redisson 若依启动需要redis和nacos么_springcloud_18

访问地址:http://localhost:81/dev-api/code

Vue获取图片请求的是前端,再反向代理映射到后端,解决跨域问题

/dev-api 被替换成 ’ ’ ,再映射到:http://localhost:8080,变成:http://localhost:8080/code

若依启动 redisson 若依启动需要redis和nacos么_springcloud_19

2、后端代码实现

3、创建新模块

(1)创建自己的模块

搭建好之后的项目结构里,ruoyi-modules是存放业务模块的位置。

ruoyi-whletest就是新增的业务。

新增业务模块并配置步骤:

  1. 在ruoyi-modules下,右键-new-Module,使用assistant或者initial初始化模块,填写项目描述如下

若依启动 redisson 若依启动需要redis和nacos么_若依启动 redisson_20

若依启动 redisson 若依启动需要redis和nacos么_springcloud_21

若依启动 redisson 若依启动需要redis和nacos么_java_22

若依启动 redisson 若依启动需要redis和nacos么_java_23

(2)修改依赖和配置文件

  • 项目结构新增ruoyi-whaletset如下,删除多余的模块 ,最后如下。

若依启动 redisson 若依启动需要redis和nacos么_分布式_24

  • 需要修改whaletest模块下的pom.xml,打开ruoyi-modules-system的系统模块的pom.xml,将内容复制到ruoyi-whaletest下的pom文件,修改artifactId和description如下,其他不变。
<artifactId>ruoyi-whaletest</artifactId>

<description>
    ruoyi-whaletest系统模块
</description>

pom文件代码内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xmlns="http://maven.apache.org/POM/4.0.0"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<parent>
		<groupId>com.ruoyi</groupId>
		<artifactId>ruoyi-modules</artifactId>
		<version>3.5.0</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
 
	<artifactId>ruoyi-whaletest</artifactId>
 
	<description>
		ruoyi-whaletest模块
	</description>
 
	<dependencies>
 
		<!-- SpringCloud Alibaba Nacos -->
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		</dependency>
 
		<!-- SpringCloud Alibaba Nacos Config -->
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		</dependency>
 
		<!-- SpringCloud Alibaba Sentinel -->
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
		</dependency>
 
		<!-- SpringBoot Actuator -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
 
		<!-- Swagger UI -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>${swagger.fox.version}</version>
		</dependency>
 
		<!-- Mysql Connector -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.22</version>
		</dependency>
 
		<!-- RuoYi Common DataSource -->
		<dependency>
			<groupId>com.ruoyi</groupId>
			<artifactId>ruoyi-common-datasource</artifactId>
		</dependency>
 
		<!-- RuoYi Common DataScope -->
		<dependency>
			<groupId>com.ruoyi</groupId>
			<artifactId>ruoyi-common-datascope</artifactId>
		</dependency>
 
		<!-- RuoYi Common Log -->
		<dependency>
			<groupId>com.ruoyi</groupId>
			<artifactId>ruoyi-common-log</artifactId>
		</dependency>
 
		<!-- RuoYi Common Swagger -->
		<dependency>
			<groupId>com.ruoyi</groupId>
			<artifactId>ruoyi-common-swagger</artifactId>
		</dependency>
 
	</dependencies>
 
	<build>
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
 
</project>
  • ruoyi-modules模块中添加子模块,这个系统自动添加进去

若依启动 redisson 若依启动需要redis和nacos么_若依启动 redisson_25

  • 复制ruoyi-system的resources文件夹下的banner.txt,bootstrap.yml,logback.xml文件到ruoyi-whaletest模块

若依启动 redisson 若依启动需要redis和nacos么_springcloud_26

  • 修改banner.txt.修改ruoyi system文字为ruoyi-whale模块。
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
==========ruoyi-whale模块=====
  • 修改bootstrap.yml的端口号为9205,应用名称ruoyi-whaletest
# Tomcat
server:
  port: 9205

# Spring
spring: 
  application:
    # 应用名称
    name: ruoyi-whaletest
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

(3)修改logback.xml中日志存放路径为:logs/ruoyi-whaletest。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志存放路径 -->
   <property name="log.path" value="logs/ruoyi-whaletest" />
   <!-- 日志输出格式 -->
   <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

    <!-- 控制台输出 -->
   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>${log.pattern}</pattern>
      </encoder>
   </appender>

    <!-- 系统日志输出 -->
   <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
         <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
         <!-- 日志最大的历史 60天 -->
         <maxHistory>60</maxHistory>
      </rollingPolicy>
      <encoder>
         <pattern>${log.pattern}</pattern>
      </encoder>
      <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
   </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
         <!-- 日志最大的历史 60天 -->
         <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
         <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
         <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 系统模块日志级别控制  -->
   <logger name="com.ruoyi" level="info" />
   <!-- Spring日志级别控制  -->
   <logger name="org.springframework" level="warn" />

   <root level="info">
      <appender-ref ref="console" />
   </root>
   
   <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>
</configuration>
  • 配置nacos

(1)登录Nacos配置中心,找到配置列表,选择ruoyi-system-dev.yml,点击克隆,并更改Data Id 为ruoyi-whaletest-dev.yml. 点击开始克隆

若依启动 redisson 若依启动需要redis和nacos么_分布式_27

(2)修改ruoyi-whaletest-dev.yml中typeAliasesPackage搜索包名为: com.ruoyi.whaletest

若依启动 redisson 若依启动需要redis和nacos么_分布式_28

(3)修改ruoyi-gateway-dev.yml网管的配置文件,新增whaletest模块

新建业务的配置

# whaletest模块
  - id: ruoyi-whaletest
      uri: lb://ruoyi-whaletest
      predicates:
        - Path=/whaletest/**
      filters:
        - StripPrefix=1

完整内容如下:

spring:
  redis:
    host: localhost
    port: 6379
    password: 
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        # 认证中心
        - id: ruoyi-auth
          uri: lb://ruoyi-auth
          predicates:
            - Path=/auth/**
          filters:
            # 验证码处理
            - CacheRequestFilter
            - ValidateCodeFilter
            - StripPrefix=1
        # 代码生成
        - id: ruoyi-gen
          uri: lb://ruoyi-gen
          predicates:
            - Path=/code/**
          filters:
            - StripPrefix=1
        # 定时任务
        - id: ruoyi-job
          uri: lb://ruoyi-job
          predicates:
            - Path=/schedule/**
          filters:
            - StripPrefix=1
        # 系统模块
        - id: ruoyi-system
          uri: lb://ruoyi-system
          predicates:
            - Path=/system/**
          filters:
            - StripPrefix=1
        # 文件服务
        - id: ruoyi-file
          uri: lb://ruoyi-file
          predicates:
            - Path=/file/**
          filters:
            - StripPrefix=1
         # whaletest模块
        - id: ruoyi-whaletest
          uri: lb://ruoyi-whaletest
          predicates:
            - Path=/whaletest/**
          filters:
            - StripPrefix=1
 
# 不校验白名单
ignore:
  whites:
    - /auth/logout
    - /auth/login
    - /*/v2/api-docs
    - /csrf

更改完之后点击发布。

  • 修改ruoyi-whale的应用WhaleApplication.java.参照RuoYiSystemApplication,如下。
/**
 * whaletest模块
 *
 * @author whale
 */
@EnableCustomConfig
@EnableCustomSwagger2
@EnableRyFeignClients
@SpringBootApplication
public class WhaletestApplication {

    public static void main(String[] args) {
        SpringApplication.run(WhaletestApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  Whaletes模块启动成功   ლ(´ڡ`ლ)゙  \n" +
                " .-------.       ____     __        \n" +
                " |  _ _   \\      \\   \\   /  /    \n" +
                " | ( ' )  |       \\  _. /  '       \n" +
                " |(_ o _) /        _( )_ .'         \n" +
                " | (_,_).' __  ___(_ o _)'          \n" +
                " |  |\\ \\  |  ||   |(_,_)'         \n" +
                " |  | \\ `'   /|   `-'  /           \n" +
                " |  |  \\    /  \\      /           \n" +
                " ''-'   `'-'    `-..-'              ");
    }

}

(3)代码自动生成

  • 代码生成

若依启动 redisson 若依启动需要redis和nacos么_分布式_29

  • 新建菜单

若依启动 redisson 若依启动需要redis和nacos么_springcloud_30

若依启动 redisson 若依启动需要redis和nacos么_若依启动 redisson_31

  • 在ruoyi-whaletest模块下导入模块

若依启动 redisson 若依启动需要redis和nacos么_分布式_32

若依启动 redisson 若依启动需要redis和nacos么_分布式_33

(4)启动项目

  • 依次找到ruoyi-gateway、ruoyi-auth、ruoyi-system、ruoyi-whaletest的启动类去启动,

注意启动顺序。网管模块和认证模块要在系统模块和代码生成模块之前。

若依启动 redisson 若依启动需要redis和nacos么_若依启动 redisson_34

  • 启动前端

若依启动 redisson 若依启动需要redis和nacos么_java_35

  • 访问项目

若依启动 redisson 若依启动需要redis和nacos么_数据库_36