前言 想来第一次与微服务结缘是在我的第一个 Springboot项目,我接触到了 Nacos 和 Gateway,从那时起,便对微服务产生了浓厚的兴趣,微服务的架构设计、服务拆分、服务治理等内容确实很有意思。这也是我们从事运维的原因之一。自己工作一段时间后,我想着是时候输出一些内容了,把微服务以更加通俗易懂的部署起来。这里先带大家简单的单机部署简单了解下,实际工作中,面临网关,注册中心,调度中心,数据同步选型等。其实部署到k8s中也是一样的,只是将服务容器化,使用k8s编排。如果大家感兴趣,点赞关注就是对我最大的支持。后期我会写一篇关于k8s部署Spring Cloud并结合jenkins,gitlab,harbor等做cicd流水线集成。
一、框架介绍 RuoYi-Cloud是一款基于Spring Boot、Spring Cloud & Alibaba、Vue、Element的前后端分离微服务极速后台开发框架。内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源。
RuoYi-Cloud 是通过Java开发,基于微服务架构设计的权限管理系统。
文档地址:http://doc.ruoyi.vip/ruoyi-cloud/
代码下载:https://gitee.com/y_project/RuoYi-Cloud
1 2 3 4 5 Java程序开发框架介绍: ● Spring:是一个开源的Java开发框架,用于简化Java程序的开发。 ● Spring Boot:是基于Spring的全新框架,对比于Spring框架更加的简洁高效。 ● Spring Cloud:是一套微服务开发框架。 ● Spring Cloud Alibaba:是阿里巴巴推出的微服务开发框架。
架构图 1 2 架构图RuoYi-Cloud-Processon (opens new window)分享地址。 https://www.processon.com/view/5ec290195653bb6f2a18504e
系统模块 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 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-datasource // 多数据源 │ └── ruoyi-common-log // 日志记录 │ └── ruoyi-common-redis // 缓存服务 │ └── ruoyi-common-seata // 分布式事务 │ └── ruoyi-common-security // 安全模块 │ └── ruoyi-common-sensitive // 数据脱敏 │ └── ruoyi-common-swagger // 系统接口 ├── ruoyi-modules // 业务模块 │ └── ruoyi-system // 系统模块 [9201] │ └── ruoyi-gen // 代码生成 [9202] │ └── ruoyi-job // 定时任务 [9203] │ └── ruoyi-file // 文件服务 [9300] ├── ruoyi-visual // 图形化管理模块 │ └── ruoyi-visual-monitor // 监控中心 [9100] ├──pom.xml // 公共依赖
主要特性
完全响应式布局(支持电脑、平板、手机等所有主流设备)
强大的一键生成功能(包括控制器、模型、视图、菜单等)
支持多数据源,简单配置即可实现切换。
支持按钮及数据权限,可自定义部门数据权限。
对常用js插件进行二次封装,使js代码变得简洁,更加易维护
完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。
国际化支持,服务端及客户端支持
完善的日志记录体系简单注解即可实现
技术选型 1、系统环境
Java EE 8
Servlet 3.0
Apache Maven 3
2、主框架
Spring Boot 2.3.x
Spring Cloud Hoxton.SR9
Spring Framework 5.2.x
Spring Security 5.2.x
3、持久层
Apache MyBatis 3.5.x
Hibernate Validation 6.0.x
Alibaba Druid 1.2.x
4、视图层
Vue 2.6.x
Axios 0.21.0
Element 2.14.x
内置功能
用户管理:用户是系统操作者,该功能主要完成系统用户配置。
部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
岗位管理:配置系统用户所属担任职务。
菜单管理:配置系统菜单,操作权限,按钮权限标识等。
角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
字典管理:对系统中经常使用的一些较为固定的数据进行维护。
参数管理:对系统动态配置常用参数。
通知公告:系统通知公告信息发布维护。
操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
登录日志:系统登录日志记录查询包含登录异常。
在线用户:当前系统中活跃用户状态监控。
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
系统接口:根据业务代码自动生成相关的api接口文档。
服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
在线构建器:拖动表单元素生成相应的HTML代码。
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
二、准备代码 gitee地址:https://gitee.com/y_project/RuoYi-Cloud
下载代码
创建代码存放目录
查看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [[email protected] RuoYi-Cloud]# cd RuoYi-Cloud-master/ [[email protected] RuoYi-Cloud-master]# ll total 88 drwxr-xr-x 13 root root 4096 Jan 7 10:55 ./ drwxr-xr-x 3 root root 4096 Feb 10 14:12 ../ drwxr-xr-x 2 root root 4096 Jan 7 10:55 bin/ drwxr-xr-x 7 root root 4096 Jan 7 10:55 docker/ drwxr-xr-x 2 root root 4096 Jan 7 10:55 .github/ -rw-r--r-- 1 root root 698 Jan 7 10:55 .gitignore -rw-r--r-- 1 root root 1063 Jan 7 10:55 LICENSE -rw-r--r-- 1 root root 12420 Jan 7 10:55 pom.xml -rw-r--r-- 1 root root 9220 Jan 7 10:55 README.md drwxr-xr-x 3 root root 4096 Jan 7 10:55 ruoyi-api/ drwxr-xr-x 3 root root 4096 Jan 7 10:55 ruoyi-auth/ drwxr-xr-x 11 root root 4096 Jan 7 10:55 ruoyi-common/ drwxr-xr-x 3 root root 4096 Jan 7 10:55 ruoyi-gateway/ drwxr-xr-x 6 root root 4096 Jan 7 10:55 ruoyi-modules/ drwxr-xr-x 6 root root 4096 Jan 7 10:55 ruoyi-ui/ drwxr-xr-x 3 root root 4096 Jan 7 10:55 ruoyi-visual/ drwxr-xr-x 2 root root 4096 Jan 7 10:55 sql/
三、环境部署 准备工作 1 2 3 4 5 6 7 JDK >= 1.8 (推荐1.8版本) Mysql >= 5.7.0 (推荐5.7版本) Redis >= 3.0 Maven >= 3.0 Node >= 12 nacos >= 2.0.4 (ruoyi-cloud < 3.0 需要下载nacos >= 1.4.x版本) sentinel >= 1.6.0
查看jdk对应maven版本链接:http://maven.apache.org/docs/history.html
安装jdk 官网地址:https://www.oracle.com/java/technologies/downloads/#java8
查看系统架构
下载jdk
创建jdk存放目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [[email protected] jdk]# mkdir /usr/local/src/jdk [[email protected] jdk]# ll total 144896 drwxr-xr-x 2 root root 4096 Feb 10 13:11 ./ drwxr-xr-x 4 root root 4096 Feb 10 11:44 ../ -rw-r--r-- 1 root root 148362647 Nov 18 22:08 jdk-8u431-linux-x64.tar.gz 解压tar包 [[email protected] jdk]# tar xf jdk-8u431-linux-x64.tar.gz [[email protected] jdk1.8.0_431]# pwd /usr/local/src/jdk/jdk1.8.0_431
配置环境变量
测试
1 2 3 4 5 [[email protected] ~]# java -version java version "1.8.0_431" Java(TM) SE Runtime Environment (build 1.8.0_431-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.431-b10, mixed mode)
安装maven 官方地址:https://maven.apache.org/download.cgi
创建maven存放目录
配置maven仓库,设置阿里镜像仓库,一定要配置一下,国内的下载jar快些,首先进入cd apache-maven-3.6.3目录,创建仓库存储目录ck
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [[email protected] maven]# cd apache-maven-3.9.9/ 创建仓库存储目录ck [[email protected] apache-maven-3.9.9]# mkdir ck [[email protected] apache-maven-3.9.9]# ll total 60 drwxr-xr-x 7 root root 4096 Feb 10 11:26 ./ drwxr-xr-x 3 root root 4096 Feb 10 11:25 ../ drwxr-xr-x 2 root root 4096 Feb 10 11:25 bin/ drwxr-xr-x 2 root root 4096 Feb 10 11:25 boot/ drwxr-xr-x 2 root root 4096 Feb 10 11:26 ck/ drwxr-xr-x 3 root root 4096 Feb 10 11:32 conf/ drwxr-xr-x 4 root root 4096 Feb 10 11:25 lib/ -rw-r--r-- 1 root root 18920 Aug 14 16:48 LICENSE -rw-r--r-- 1 root root 5034 Aug 14 16:48 NOTICE -rw-r--r-- 1 root root 1279 Aug 14 16:48 README.txt
进入cd conf目录,编辑 vi settings.xml文件,找到·localRepository下面复制一行加上/usr/local/apache-maven-3.6.3/ck , 在找到mirror 加上阿里的仓库配置,配置完成报错退出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [[email protected] apache-maven-3.9.9]# cd conf/ [[email protected] conf]# ll total 28 drwxr-xr-x 3 root root 4096 Feb 10 11:32 ./ drwxr-xr-x 7 root root 4096 Feb 10 11:26 ../ drwxr-xr-x 2 root root 4096 Aug 14 16:48 logging/ -rw-r--r-- 1 root root 10473 Feb 10 11:32 settings.xml -rw-r--r-- 1 root root 3645 Aug 14 16:48 toolchains.xml [[email protected] conf]# vim settings.xml .... <localRepository>/usr/local/src/maven/apache-maven-3.9.9/ck</localRepository> ....
阿里的仓库配置
1 2 3 4 5 6 7 8 9 [[email protected] conf]# vim settings.xml .... <mirror> <id >alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> ....
配置maven环境变量
测试
1 2 3 4 5 6 7 [[email protected] ~]# mvn -v Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) Maven home: /usr/local/src/maven/apache-maven-3.9.9 Java version: 1.8.0_431, vendor: Oracle Corporation, runtime: /usr/local/src/jdk/jdk1.8.0_431/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux" , version: "6.8.0-52-generic" , arch : "amd64" , family: "unix"
安装nodejs
测试
安装mysql
加入开机自启
1 2 3 [[email protected] apt]# systemctl enable mysql.service Synchronizing state of mysql.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable mysql
查看所有用户信息
1 select user,host from mysql.user;
创建root账号,密码123456
1 mysql> create user root @'%' identified by '123456';
用户所有权限但是不包括授权的权限
1 mysql> grant all on *.* to root@'%';
给用户可以授权其他用户的权限
1 mysql> grant Grant option on *.* to root@'%';
修改监听地址
注意 :配置8.0版本参考:我这里通过这种方式没有实现所有IP都能访问;我是通过直接修改配置文件才实现的,MySQL8.0版本把配置文件 my.cnf
拆分成mysql.cnf
和mysqld.cnf
,我们需要修改的是mysqld.cnf
文件:
1 2 3 4 [[email protected] mysql]# vim /etc/mysql/mysql.conf.d/mysqld.cnf ... bind-address = 0.0.0.0 mysqlx-bind-address = 0.0.0.0
重启服务
查看
安装redis
加入开机自启
1 2 3 4 5 6 [[email protected] apt]# systemctl list-units --type =service | grep redis redis-server.service loaded active running Advanced key-value store [[email protected] apt]# systemctl enable redis-server.service --now Synchronizing state of redis-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable redis-server
安装nacos 先部署微服务注册中心Nacos,在部署微服务层各个模块,最后接入前端UI
官方地址:https://nacos.io/zh-cn/
下载tar包
1 [[email protected] ~]# wget https://github.com/alibaba/nacos/releases/download/2.1.1/nacos-server-2.1.1.tar.gz
解压tar包
编辑配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [[email protected] ~]# cd ./nacos/conf/ [[email protected] conf]# ll total 96 drwxr-xr-x 2 502 staff 4096 Feb 10 16:20 ./ drwxr-xr-x 5 root root 4096 Feb 10 16:03 ../ -rw-r--r-- 1 502 staff 1224 May 11 2022 1.4.0-ipv6_support-update.sql -rw-r--r-- 1 502 staff 9798 Feb 10 16:20 application.properties -rw-r--r-- 1 502 staff 9754 Aug 8 2022 application.properties.example -rw-r--r-- 1 502 staff 670 Aug 8 2022 cluster.conf.example -rw-r--r-- 1 502 staff 31156 Aug 8 2022 nacos-logback.xml -rw-r--r-- 1 502 staff 10825 Aug 8 2022 nacos-mysql.sql -rw-r--r-- 1 502 staff 8939 Aug 8 2022 schema.sql [[email protected] conf]# vim application.properties server.servlet.contextPath=/nacos server.port=8848 spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true &useUnicode=true &useSSL=false &serverTimezone=UTC&allowPublicKeyRetrieval=true db.user.0=root db.password.0=123456
在MySQL中创建ry-cloud
数据库
登录数据库
创建ry-cloud库
1 mysql> create database `ry-cloud` charset utf8;
创建ry-config库
1 mysql> create database `ry-config` charset utf8;
查看所有库
1 2 3 4 5 6 7 8 9 10 11 12 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | ry-cloud | | ry-config | | sys | +--------------------+ 6 rows in set (0.01 sec)
导入数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [[email protected] sql]# pwd /root/RuoYi-Cloud/RuoYi-Cloud-master/sql [[email protected] sql]# ll total 100 drwxr-xr-x 2 root root 4096 Jan 7 10:55 ./ drwxr-xr-x 13 root root 4096 Jan 7 10:55 ../ -rw-r--r-- 1 root root 11985 Jan 7 10:55 quartz.sql -rw-r--r-- 1 root root 56722 Jan 7 10:55 ry_20240629.sql -rw-r--r-- 1 root root 20053 Jan 7 10:55 ry_config_20240902.sql -rw-r--r-- 1 root root 3083 Jan 7 10:55 ry_seata_20210128.sql 导入数据 [[email protected] sql]# mysql -uroot -p123456 ry-config <ry_config_20240902.sql mysql: [Warning] Using a password on the command line interface can be insecure. [[email protected] sql]# mysql -uroot -p123456 ry-cloud < ry_20240629.sql mysql: [Warning] Using a password on the command line interface can be insecure.
修改Nacos的application.properties
文件,将默认的Nacos库指向新的ry-config
库,这样Nacos就可以管理项目的配置文件
1 2 3 4 5 vim nacos/conf/application.properties .... db.url.0=jdbc:mysql://192.1.7.244:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.user.0=root db.password.0=123456
启动 Nacos 服务(standalone表示单机模式运行,非集群模式)
1 2 3 4 5 6 7 [[email protected] bin]# pwd /root/nacos/bin [[email protected] bin]# ./startup.sh -m standalone /usr/local/src/jdk/jdk1.8.0_431/bin/java -Djava.ext.dirs=/usr/local/src/jdk/jdk1.8.0_431/jre/lib/ext:/usr/local/src/jdk/jdk1.8.0_431/lib/ext -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xloggc:/root/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/root/nacos/plugins/health,/root/nacos/plugins/cmdb,/root/nacos/plugins/selector -Dnacos.home=/root/nacos -jar /root/nacos/target/nacos-server.jar --spring.config.additional-location=file:/root/nacos/conf/ --logging.config=/root/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288 nacos is starting with standalone nacos is starting,you can check the /root/nacos/logs/start.out
查看日志
访问
1 2 3 地址:http://192.1.7.244:8848/nacos/index.html 账号:nacos 密码:nacos
此时Nacos已经获取到RuoYi-Cloud各组件的配置文件,后续修改各组件的配置文件,在Nacos中修改即可。
打包RuoYi Cloud项目 进入RuoYi-Cloud目录打包项目
使用maven打包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [[email protected] RuoYi-Cloud-master]# mvn clean package -Dmaven.test.skip=true .... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for ruoyi 3.6.5: [INFO] [INFO] ruoyi .............................................. SUCCESS [ 8.096 s] [INFO] ruoyi-common ....................................... SUCCESS [ 0.002 s] [INFO] ruoyi-common-core .................................. SUCCESS [01:35 min] [INFO] ruoyi-api .......................................... SUCCESS [ 0.002 s] [INFO] ruoyi-api-system ................................... SUCCESS [ 0.233 s] [INFO] ruoyi-common-redis ................................. SUCCESS [ 5.422 s] [INFO] ruoyi-common-security .............................. SUCCESS [ 0.772 s] [INFO] ruoyi-auth ......................................... SUCCESS [ 58.992 s] [INFO] ruoyi-gateway ...................................... SUCCESS [ 17.479 s] [INFO] ruoyi-visual ....................................... SUCCESS [ 0.001 s] [INFO] ruoyi-visual-monitor ............................... SUCCESS [ 6.823 s] [INFO] ruoyi-common-datasource ............................ SUCCESS [ 9.523 s] [INFO] ruoyi-common-datascope ............................. SUCCESS [ 0.121 s] [INFO] ruoyi-common-log ................................... SUCCESS [ 0.191 s] [INFO] ruoyi-common-swagger ............................... SUCCESS [ 1.419 s] [INFO] ruoyi-modules ...................................... SUCCESS [ 0.001 s] [INFO] ruoyi-modules-system ............................... SUCCESS [ 1.307 s] [INFO] ruoyi-modules-gen .................................. SUCCESS [ 1.825 s] [INFO] ruoyi-modules-job .................................. SUCCESS [ 1.882 s] [INFO] ruoyi-modules-file ................................. SUCCESS [ 13.886 s] [INFO] ruoyi-common-seata ................................. SUCCESS [ 24.541 s] [INFO] ruoyi-common-sensitive ............................. SUCCESS [ 0.109 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time : 04:28 min [INFO] Finished at: 2025-02-10T18:26:29+08:00 [INFO] ------------------------------------------------------------------------
如果打包其中的一个项目,可以使用这种方式:
1 mvn package -Dmaven.test.skip=true -pl ruoyi-modules/ruoyi-system/ -am
四、部署模块 部署system系统模块 登录到nacos修改ruoyi-system-dev.yml
文件,需要指定连接数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 spring: redis: host: localhost port: 6379 password: datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.1.7.244:3306/ry-cloud?useUnicode=true &characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true &serverTimezone=GMT%2B8 username: root password: 123456
添加配置后,点击右下角的【发布】即可。
启动ruoyi-system模块
1 2 3 4 5 java -Dspring.profiles.active=dev \ -Dspring.cloud.nacos.config.file-extension=yml \ -Dspring.cloud.nacos.discovery.server-addr=192.1.7.244:8848 \ -Dspring.cloud.nacos.config.server-addr=192.1.7.244:8848 \ -jar /root/RuoYi-Cloud/RuoYi-Cloud-master/ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar &> /var/log/ruoyi-system.log &
命令解释:
1 2 3 4 5 6 java //Java 命令 -Dspring.profiles.active //在spring中用于设置程序的配置环境(dev开发,test 测试,prod生产) -Dspring.cloud.nacos.config.file-extension //指定了程序的配置文件在Nacos的扩展名为yml -Dspring.cloud.nacos.discovery.server-addr //指定了Nacos服务发现的地址和端口 -Dspring.cloud.nacos.config.server-addr //指定了Nacos配置中心的地址和端口 -jar //指定jar包路径和名称
查看日志
nacos查看服务,这时候可以看见服务已经注册上来了
注册成功后,网关就可以通过Nacos获取到该服务的信息,来调用该服务。
部署auth认证模块 登录Nacos修改ruoyi-auth-dev.yml
文件,指定连接Redis信息
1 2 3 4 5 spring: redis: host: localhost port: 6379 password:
添加配置后,点击右下角的【发布】即可。
启动ruoy-auth模块
1 2 3 4 5 6 java -Dspring.profiles.active=dev \ -Dspring.cloud.nacos.config.file-extension=yml \ -Dspring.cloud.nacos.discovery.server-addr=192.1.7.244:8848 \ -Dspring.cloud.nacos.config.server-addr=192.1.7.244:8848 \ -jar /root/RuoYi-Cloud/RuoYi-Cloud-master/ruoyi-auth/target/ruoyi-auth.jar &> /var/log/ruoyi-auth.log &
查看日志
在Nacos服务列表中查看是否注册成功
部署gateway网关模块 登录Nacos修改ruoyi-gateway-dev.yml
文件,需要指定连接Redis信息
1 2 3 4 5 spring: redis: host: localhost port: 6379 password:
添加配置后,点击右下角的【发布】即可。
启动ruoyi-gateway模块
1 2 3 4 5 java -Dspring.profiles.active=dev \ -Dspring.cloud.nacos.config.file-extension=yml \ -Dspring.cloud.nacos.discovery.server-addr=192.1.7.244:8848 \ -Dspring.cloud.nacos.config.server-addr=192.1.7.244:8848 \ -jar /root/RuoYi-Cloud/RuoYi-Cloud-master/ruoyi-gateway/target/ruoyi-gateway.jar &> /var/log/ruoyi-gateway.log &
查看日志
在Nacos服务列表中查看是否注册成功
部署monitor监控模块 monitor配置信息存储在nacos中,文件为ruoyi-monitor-dev.yml
1 2 3 4 5 6 7 8 9 10 spring: security: user: name: admin password: 123456 boot: admin: ui: title: 若依服务状态监控
启动ruoyi-monitor模块
1 2 3 4 5 java -Dspring.profiles.active=dev \ -Dspring.cloud.nacos.config.file-extension=yml \ -Dspring.cloud.nacos.discovery.server-addr=192.1.7.244:8848 \ -Dspring.cloud.nacos.config.server-addr=192.1.7.244:8848 \ -jar /root/RuoYi-Cloud/RuoYi-Cloud-master/ruoyi-visual/ruoyi-monitor/target/ruoyi-visual-monitor.jar &> /var/log/ruoyi-monitor.log &
查看日志
在Nacos服务列表中查看是否注册成功
访问ruoyi-monitor的页面
1 2 3 url: http://192.1.7.244:9100/login 账号:admin 密码:123456
部署ui前端 修改ruoyi-ui连接gateway的地址(本环境网关与ruoyi-ui部署在同一节点,无需修改)
1 2 3 4 5 6 7 8 9 10 [[email protected] RuoYi-Cloud-master]# vim RuoYi-Cloud/ruoyi-ui/vue.config.js 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`,
切换到UI目录
指定依赖库地址,需要先下载项目的依赖
构建项目
如果构建项目时报错 :error:0308010C:digital envelope routines::unsupported
主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错误。
输入以下以下命令,强制Node.js使用旧版本的OpenSSL库,以解决与新版本Node.js中加密库不兼容的问题。
1 export NODE_OPTIONS=--openssl-legacy-provider
编译打包项目
打包成功后,会生成一个名为 dist 目录,里边就是前端页面文件,将页面文件放到nginx对应的发布项目目录(比如html目录)即可。
部署Nginx发布UI(就在当前节点部署即可)
准备UI站点配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [[email protected] conf.d]# vim /etc/nginx/conf.d/ruoyi.conf server { listen 80; server_name localhost; location / { root /usr/share/nginx/ruoyi-ui; try_files $uri $uri / /index.html; index index.html index.htm; } location /prod-api/{ proxy_set_header Host $http_host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header REMOTE-HOST $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_pass http://localhost:8080/; } if ($request_uri ~ "/actuator" ) { return 403; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
创建目录拷贝/dist目录下代码
1 2 [root@ruoyi-demo ruoyi-ui]# mkdir /usr/share/nginx/ruoyi-ui [root@ruoyi-demo ruoyi-ui]# cp -r dist/* /usr/share/nginx/ruoyi-ui
启动Nginx
Windows配置本地解析
1 2 C:\Windows\System32\drivers\etc\hosts 192.1.7.244 cherry.nuoyi.com
访问
1 2 3 url:http://cherry.nuoyi.com/login?redirect=%2Findex 账号:admin 密码:admin123
五、更新特定模块 更新ruoyi-auth模块,修改登录时的提示信息
1 2 3 4 5 6 [[email protected] RuoYi-Cloud-master]# vim /root/RuoYi-Cloud/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在" ); throw new ServiceException("输入的用户名:" + username + " 不存在" ); }
重新打包ruoyi-auth模块
1 2 3 命令说明: -pl //需要构建的目录 -am //同时构建该模块依赖的其他模块
1 2 3 4 5 6 7 8 9 10 11 [[email protected] RuoYi-Cloud-master]# cd RuoYi-Cloud/ mvn package -Dmaven.test.skip=true -pl ruoyi-auth -am =========================================================== [INFO] ruoyi .............................................. SUCCESS [ 1.266 s] [INFO] ruoyi-common ....................................... SUCCESS [ 0.001 s] [INFO] ruoyi-common-core .................................. SUCCESS [ 1.962 s] [INFO] ruoyi-api .......................................... SUCCESS [ 0.001 s] [INFO] ruoyi-api-system ................................... SUCCESS [ 0.051 s] [INFO] ruoyi-common-redis ................................. SUCCESS [ 0.128 s] [INFO] ruoyi-common-security .............................. SUCCESS [ 0.056 s] [INFO] ruoyi-auth ......................................... SUCCESS [ 3.560 s]
提示: 同一个项目中,如果其他服务依赖于被更新的服务, 那么在更新这个服务时,也会重新打包和部署那些相关的服务。
停止ruoyi-auth重新运行
jps命令是java的命令行工具,用于列出正在运行的Java进程信息
1 2 3 4 5 6 7 8 9 [[email protected] RuoYi-Cloud-master]# jps 315905 ruoyi-modules-system.jar 318947 Jps 212244 nacos-server.jar 303327 ruoyi-visual-monitor.jar 301785 ruoyi-gateway.jar 301082 ruoyi-auth.jar [[email protected] RuoYi-Cloud-master]# kill 301082
重新启动ruoyi-auth模块
1 2 3 4 5 java -Dspring.profiles.active=dev \ -Dspring.cloud.nacos.config.file-extension=yml \ -Dspring.cloud.nacos.discovery.server-addr=192.1.7.244:8848 \ -Dspring.cloud.nacos.config.server-addr=192.1.7.244:8848 \ -jar /root/RuoYi-Cloud/RuoYi-Cloud-master/ruoyi-auth/target/ruoyi-auth.jar &> /var/log/ruoyi-auth.log &
登录ruoyi页面,输入一个不存在的用户来验证更新结果