硬件环境:
· Windows开发主机
· CentOS Stream 10(中间件、数据库服务器)
软件环境:
· IntelliJ IDEA 2023.2.2
· jdk1.8
· maven 3.6.3
其他:
· CentOS Stream 10(中间件、数据库服务器) 使用 Docker version 29.2.1, build a5c7197,并安装1Panel方便操作
· Linux安装Docker: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
· (可选)Windows Docker官方安装文档:https://docs.docker.com/desktop/setup/install/windows-install/
· (可选)安装1Panel:
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"
配置jdk1.8环境变量
Java环境验证(Windows命令):
java -version #显示java版本即为成功
配置maven环境变量
Maven环境验证(Windows命令):
mvn -v #显示Maven版本即为成功
ruoyi官网:https://doc.ruoyi.vip/
微服务版本项目链接:https://gitee.com/y_project/RuoYi-Cloud
HTTPS克隆地址:https://gitee.com/y_project/RuoYi-Cloud.git
1、IntelliJ IDEA → Open → 项目文件夹 →(等待自动识别项目和依赖下载)
2、修改各ruoyi服务的resources/bootstrap.yml的服务的地址(nacos、sentinel等服务的提供地址),本机做mysql、nacos等中间件服务的使用默认的127.0.0.1即可
3、使用docker一键运行需要的服务中间件 (nacos、mysql、redis、nginx,ruoyi基础服务... ...)
3.0 打包ruoyi各服务
IntelliJ IDEA(左下角)→点击终端(Termina)→ 运行以下命令:
cd .\bin\
.\package.bat
(等待编译打包jar完成)
3.1 编译打包jar完成后将各服务target目录中的的jar包复制到docker目录下对应的各jar目录下
3.2 复制项目的sql目录下的.sql文件到docker/db下
3.3 docker/docker-compose.yml修改:mysql.volumes中增加挂载目录:- ./mysql/db:/docker-entrypoint-initdb.d(解决docker启动mysql容器后不执行sql初始化不执行错误)
3.4 docker/docker-compose.yml修改:ruoyi-nacos.image改为:nacos/nacos-server:v2.2.3(解决nacos最新版本强制配置鉴权启动失败错误)
3.5 docker/nacos/dockerfile文件FROM修改为:nacos/nacos-server:v2.2.3
3.6(可选)去除nginx的安装,我想使用1Panel的 OpenResty ,去除docker-compose.yml的nginx相关配置即可
3.7 (可选)打包前端项目给nginx运行前端项目:
ruoyi-ui/vue.config.js修改process.env.VUE_APP_BASE_API的IP地址
在终端(Termina)运行命令
cd ..\ruoyi-ui\
npm install
npm run build:prod
复制前端项目资源dist目录到docker/nginx/html下
3.8 复制项目的docker目录到Docker程序所在主机(以Linux的/root/ruoyi目录下为例)
3.9 进入docker-compose.yml所在目录:cd /root/ruoyi/docker
3.10 加载各容器:docker compose up -d
(若遇到ERROR [ruoyi-gateway internal] load metadata for docker.io/library/openjdk:8-jre错误,把ruoyi目录各若依组件下的dockerfile文件的FROM xxxx 改成FROM docker.1ms.run/eclipse-temurin:8-jre)
3.等待镜像下载和部署完成(ruoyi的各服务可能启动不了,不用管,在开发工具独立运行,待gateway、auth、file等服务定稿要进行部署了,再使用docker部署一键启动)
3.12 http://192.168.30.192:8848/nacos/index.html 去nacos改各个yml配置中的个服务中间件的ip地址
1、新建项目模块:右键ruoyi-modules→New→Module...→输入名称、Parent选择ruoyi-modules等信息→Create
2、编辑pom.xml,示例:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.6.7</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>da-process</artifactId>
<description>
da-process数农加工管理
</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>
<!-- Mysql Connector -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</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>记得点击右上角的Maven图标更新依赖
3、创建项目结构
3.1 启动类XxxxApplication.java 添加注解
@EnableCustomConfig
@EnableRyFeignClients
@SpringBootApplicationmain函数示例:
public static void main(String[] args)
{
SpringApplication.run(DaProcessApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 数农加工管理模块启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" +
" | _ _ \\ \\ \\ / / \n" +
" | ( ' ) | \\ _. / ' \n" +
" |(_ o _) / _( )_ .' \n" +
" | (_,_).' __ ___(_ o _)' \n" +
" | |\\ \\ | || |(_,_)' \n" +
" | | \\ `' /| `-' / \n" +
" | | \\ / \\ / \n" +
" ''-' `'-' `-..-' ");
}3.2 resources目录下添加bootstrap.yml,注意指定一个未占用的端口号
bootstrap.yml内容参考:
# Tomcat
server:
port: 9204
# Spring
spring:
application:
# 应用名称
name: da-process
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 192.168.30.192:8848
config:
# 配置中心地址
server-addr: 192.168.30.192:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
3.3 (可选)创建banner.txt文件
文件内容示例:
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
.___
__| _/____ _____________ ____ ____ ____ ______ ______
/ __ |\__ \ ______ \____ \_ __ \/ _ \_/ ___\/ __ \ / ___// ___/
/ /_/ | / __ \_ /_____/ | |_> > | \( <_> ) \__\ ___/ \___ \ \___ \
\____ |(____ / | __/|__| \____/ \___ >___ >____ >____ >
\/ \/ |__| \/ \/ \/ \/在线生成链接:https://patorjk.com/software/taag/#p=display&f=Graffiti&t=da-process&x=none&v=4&h=4&w=80&we=false
3.4(可选)创建logback.xml,参考别的文件,注意修改模块名
4、Nacos添加(模块名-dev.yml)配置,参考别的配置文件,注意修改配置的IP地址、端口号、包名、接口文档的描述文字等信息;配置可根据当前模块的功能动态配置(比如pom.xml中没有用到mybatis,就可以不配置mybatis相关的内容)
以 模块命 da-process 为例,da-process-dev.yml 内容
# spring配置
spring:
redis:
host: 192.168.30.192
port: 6379
password:
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: ruoyi
loginPassword: 123456
dynamic:
druid:
initial-size: 5
min-idle: 5
maxActive: 20
maxWait: 60000
connectTimeout: 30000
socketTimeout: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,slf4j
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
# 主库数据源
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.30.192:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: password
# 从库数据源
# slave:
# username:
# password:
# url:
# driver-class-name:
# mybatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.daprocess
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath:mapper/**/*.xml
# springdoc配置
springdoc:
gatewayUrl: http://localhost:8080/${spring.application.name}
api-docs:
# 是否开启接口文档
enabled: true
info:
# 标题
title: '数农加工管理接口文档'
# 描述
description: '数农加工管理接口描述'
# 作者信息
contact:
name: GuiJi
url: https://guiji20.top
5、创建controller包,并添加一个测试Controller类
以TestController.java为例,TestController.java内容示例:
@RestController
@RequestMapping("/test")
public class TestController extends BaseController {
/**
* 测试接口1:GET请求(无参数)
* 访问路径:http://localhost:9204/process/test/hello
*/
@GetMapping("/hello")
public AjaxResult hello() {
// 封装返回结果(若依通用 AjaxResult)
return AjaxResult.success("DA-PROCESS 模块测试成功!", "Hello Da-Process!");
}
}6、启动项目
7、测试- 直接访问
7.1 网页直接访问http://localhost:9204/test/hello测试联通性
8、测试-通过网关访问
8.1 Nacos修改网关ruoyi-gateway-dev.yml配置文件,增加模块配置内容,注意修改模块名
# 数农加工管理
- id: da-process
uri: lb://da-process
predicates:
- Path=/daprocess/**
filters:
- StripPrefix=18.2 重启gateway网关服务
8.3 网关访问接口
8.3.1 浏览器打开若依登录界面,按F12进入调试界面切换到网络(network) ,登录用户,获取token令牌
8.3.2 PostMan或者APIFox等工具,设置请求令牌后请求接口http://localhost:8080/daprocess/test/hello测试联通性(daprocess是ruoyi-gateway-dev.yml配置文件的predicates.Path配置的)