作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123004798
目录
第四步:配置nacos中关于ruoyi微服务访问数据库所需要的信息
第六大步:部署Rouyi系统后台管理系统UI:ruoyi-ui'
集群规划:
第一大步:MySQL微服务的部署、配置、初始化
第1步:MySQL微服务的部署
按照有状态Service的方式部署MySQL:
[云原生专题-50]:Kubesphere云治理-操作-分步部署基于微服务的业务应用 - 数据库中间件MySQL微服务部署过程_文火冰糖(王文兵)的博客-CSDN博客
备注:
- MySQL数据访问的用户名和密码是通过创建服务是的环境变量传入的,默认的用户名是root, 密码可以通过如下的方式设定为"root"
- MySQL数据库,必须通过NodePort Service的方式,提供公网远程访问。
- 云上MySQL数据库可以部署多个实例。
- 云上MySQL数据库的实例可以动态的伸缩、相互负载均衡。
- 云上MySQL数据库可以相互容灾,一个节点奔溃,可以自动迁移到其他节点上。
第2步:MySQL微服务库的数据迁移(可选)
如果之前在单机版上运行了RuoYi Cloud项目,那么应该已经有了本地的MySQL数据库,此时可以通过MySQL workbench工具,把本地MySQL数据库的内容直接迁移到部署在“云”上的MySQL数据库,轻松、简单、快速。
有三个schemas需要从本地数据库导入到远程刚刚部署的MySQL数据库中。
- ry-config:nacos微服务所需要的数据库,用于管理注册到其中业务相关的微服务。
- ry-cloud:rouyi应用程序微服务所需要的数据库,用于存放rouyi管理系统中的配置数。
- ry-seata:ruoyi的分布式事务模块数据库
导入成功后,可以通过MySQL workbench远程连接到远程数据库检查数据库的内容。
第3步:数据库的初始化(可选之一)
通过MySQL workbench连接远程的服务器,分布导入RuoYi-Cloud提供的几个本地数据库
- ry-config:RuoYi-Cloud\sql\ry_config_20220114.sql =》 for nacos
- ry-cloud:RuoYi-Cloud\sql\ry_20210908.sql =》 RuoYi的后台管理数据库
- ry-cloud:RuoYi-Cloud\sql\quartz.sql =》 RuoYi job调度数据库
- ry-seata:RuoYi-Cloud\sql\ry_seata_20210128.sql =》RuoYi 分布式事务模块
第二大步:nacos微服务的部署、配置、初始化
第1步:nacos微服务的部署
按照有状态Service的方式部署nacos:
[云原生专题-55]:Kubesphere云治理-操作-分步部署基于微服务的业务应用 - 微服务注册中间件Nacos的部署_文火冰糖(王文兵)的博客-CSDN博客
备注:
(1)部署多个nacos实例,比如3个pod
(2)通过LSB Service方式实现多个nacos的负载均衡
(3)LSB Service通过集群内部的域名,而不是IP地址,提供给集群内的微服务进行访问(注册)
(4)要挂载配置nacos的配置文件:
- cluster.conf
- application.properites
第2步:nacos服务自身的配置文件的修改
(1)cluster.conf配置的修改
# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848
用每个nacos node实例的域名,替换IP地址,应用该配置文件后,nacos服务会自动重启。
(2)application.Properties配置文件的修改
该配置文件,定义了nacos如何访问其所需要的MySQL数据库。
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
db.user.0=root
db.password.0=root
- nacos访问MySQL数据库微服务的域名,替换本地IP地址:127.0.0.1·
- nacos访问MySQL数据库微服务的端口号:3306
- nacos访问MySQL数据库微服务的用户名:root
- nacos访问MySQL数据库微服务的用户名:root
第3步:Nacos测试
http://公网地址:8848/nacos/index.html
第三大步:Redis微服务的部署、配置、初始化
redis服务器提供给ruoyi的微服务存储业务数据
第1步:Redis微服务的部署
- 需要挂载配置文件
第2步:Redis微服务的配置(可选)
修改配置文件,设定Redis访问的密码
可以不用设置Redis的访问密码
第3步:Redis微服务的初始化(无)
无初始化数据需求。
第四步:配置nacos中关于ruoyi微服务访问数据库所需要的信息
第1步:为ruoyi微服务指定访问MySQL数据库的信息
(1)确定使用到MySQL数据库的Ruoyi微服务
- ruoyi-job-dev.yml
- ruoyi-system-dev.yml
(2)修改Ruoyi访问MySQL数据库访问所需要的用户名、密码
- MySQL数据库的域名
- MySQL数据库的端口号
- 用户名:root
- 密码:root
由于微服务众多,很多微服务需要访问MySQL数据库,如果在每个微服务上设置访问MySQL数据库的用户名和密码,效率自然低下,为此,采用了集中式的方式管理微服务访问MySQL数据库的用户名和密码,nacos是微服务的注册中心,正好符合集中化管理微服务的职责,因此微服务访问MySQL数据库的用户名和密码的信息就可以由nacos统一进行管理,当然,nacos自身是不存放数据的,nacos把数据存放在MySQL数据库仓库中。
第2步:为Ruoyi微服务指定访问Redis数据库的信息
(1)确定使用到Redis数据库的Ruoyi微服务
- ruoyi-gateway
- ruoyi-auth
- ruoyi-system
- ruoyi-gen
- ruoyi-job
(2)修改对应的yml文件
- redis服务的域名,默认是localhost
- port:6379 (默认)
- 登录密码:root (可选设置,默认为空)
第五大步:部署Rouyi系统后台微服务:ruoyi-xxx
第1步:修改bootstrap.yml配置文件(可选)
指定Nacos域名和端口号。
第2步:编译微服务代码,并打包成jar包
采用IntelliJ IDEA集成开发环境的maven工具进行编译、测试、验证
(1)入口:Maven(可以执行软件发布的流水线操作,不仅仅是build)
(2)在ruoyi/Lifecycle操作,这里对所有的模块执行指定的操作
(3)选clean、validate、compile、test、pacakge
(4)执行运行
- clean:清除编译过程中的目标文件
- validate:检查环境
- compile:对每个模块进行编译
- test:单元测试
- pacakge:把java的目标代码打包成jar包,可以在docker中执行的jar目标文件
以gateway为例,生成的jar文件在:
F:\MySource\gitee\RuoYi-Cloud\ruoyi-gateway\target\ruoyi-gateway.jar
第3步:制作微服务的docker镜像
(1)docker镜像制作的服务器选择
docker镜像的制作需要有docker的环境,可以在windows下进行,也可在Linux编译服务器上执行,也可以在部署ruoyi和K8S的Linux主机上(天然自带docker环境),如果是在远程的Linux服务器上,需要通过sfpt把制作镜像所需要的输入文件,传送到服务器上。
(2)准备输入目录和dockerfile
ruoyi为构建docker镜像提供了目录结构和初始的dockerfile,以gateway微服务为例:
RuoYi-Cloud\docker\ruoyi\gateway
# 基础镜像 =》 采用java8 jre环境,也可以使用待调试信息的java8 jar环境
FROM openjdk:8-jre
# author =》作者
MAINTAINER ruoyi
# 挂载目录 =》 创建jar目标文件在docker镜像中的位置
VOLUME /home/ruoyi
# 创建目录 =》 生成的docker镜像中,存放jar文件的目录
RUN mkdir -p /home/ruoyi
# 指定路径 》 指定存放jar文件的目录
WORKDIR /home/ruoyi
# 复制jar文件到路径 =》 输入文件的路径 =》 docker镜像中jar文件的位置
COPY ./jar/ruoyi-gateway.jar /home/ruoyi/ruoyi-gateway.jar
# 启动网关服务 =》 如何通过docker启动,通过WORKDIR目录和文件名找到docker中的jar文件
ENTRYPOINT ["java","-jar","ruoyi-gateway.jar"]
(3)准备输入文件:jar
把RuoYi-Cloud\ruoyi-gateway\target\ruoyi-gateway.jar 文件,手工拷贝到
RuoYi-Cloud\docker\ruoyi\gateway\jar目录中
针对其他jar文件,执行相同的操作:
(4)通过sftp工具,把ruoyi目录上传到制作docker镜像的服务器上。
备注:如果直接在windows上打包,这一步则可以省略。
(5)在制作docker机器的服务器上执行:
$ cd ruoyi/ruoyi-gateway
$ docker build -t ruoyi-gateway:v1.0 -f Dockerfile .
依次,在每个目录中执行上述命令,生成各自的docker镜像。
(6)检查生成的镜像
$ docker images |grep ruoyi
第4步:发布微服务的docker镜像
可以把镜像发布到docker hub服务或阿里云镜像服务器上。
(1)注册账号(免费个人空间)
(2)创建仓库或名字空间, 用于存储镜像
(3)通过docker命令行登录到镜像服务器
docker login --username xxxxx register.cn-hangzhou.aliyuncs.com
(4)给镜像打标签tag
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lyf_ruoyi/ruoyi-gateway:[镜像版本号]
依次为每个镜像打标签。。。。。
(5)推送镜像
docker push registry.cn-hangzhou.aliyuncs.com/lyf_ruoyi/ruoyi-gateway:[镜像版本号]
一次发布每个镜像。。。。。。。
(6)检查发布的镜像
在docker hub服务或阿里云镜像服务器的web页面检查发布的镜像是否上传成功 。
第5步:部署微服务的docker镜像
共性:
- 以无状态Service的方式部署如下的镜像
- 无外网访问
- 部署单个服务前,必须确认对应的nacos配置文件的设置是否正确(MySQL和Redis服务器)
- mount配置文件:bootstrap.yml配置文件,指定Nacos域名和端口号
依次部署:
- ruoyi-vistual-monitor
- ruoyi-system
- ruoyi-job
- ruoyi-gateway
- ruoyif-file
- ruoyi-auth
第6步:测试部署的微服务
在nacos管理终端中,查看服务每个服务是否注册成功。
http://公网地址:8848/nacos/index.html
第六大步:部署Rouyi系统后台管理系统UI:ruoyi-ui'
第1步: 编译前修改配置文件的修改(可选)
RuoYi-Cloud\ruoyi-ui\vue.config
target: `http://localhost:8080`, => 修改成网关的域名
第2步:编译微服务目标代码并打包
ruoyi-ui并不是jar文件,而是各个页面的cs的配置文件。
该镜像的基础是nginx镜像,只要把这些页面的配置提供给nginx引擎,页面就可以launch起来了。
cd RuoYi-Cloud\ruoyi-ui
# 开发环境
nmp run build:dev
# 生成环境
nmp run build:prod
输出制品包:
RuoYi-Cloud\ruoyi-ui\dist
输出是一组页面配置文件,包括首页index.html
dist目录以及这些配置文件,即为docker镜像制作的输入文件。
第3步:准备dockerfile和nginx镜像模板
(1)
ruoy已经为我们准备好了nginx镜像模板,位置在:RuoYi-Cloud\docker\nginx
我们只需要把编译打包出来dist目录中的内容,到此目录中的子目录即可:
源 :RuoYi-Cloud\ruoyi-ui\dist
目的:RuoYi-Cloud\docker\nginx\html\dist\
(2)修改nginx配置文件 (可选,后续可以通过mount配置文件的方式,在docker中修改)
\RuoYi-Cloud\docker\nginx\conf\nginx.conf
server {
listen 80;
server_name localhost; # 修改成“-”,表明不限制接口
proxy_pass http://ruoyi-gateway:8080/; # =》 rouyi-gateway的域名
第4步:制作微服务的docker镜像
$ cd ruoyi/ruoyi-ui
$ docker build -t ruoyi-ui:v1.0 -f Dockerfile .
第5步:发布微服务的docker镜像
docker login --username xxxxx register.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lyf_ruoyi/ruoyi-ui:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/lyf_ruoyi/ruoyi-gateway:[镜像版本号]
第6步:部署微服务的docker镜像
选择nodePort向集群外的公网暴露给服务,通过公网访问ruoyi的后台管理。
第7步:测试部署的微服务
- 在打包的时候修改后端的配置文件:bootstrap.yml
- 在打包的时候修改前端的配置文件: RuoYi-Cloud\ruoyi-ui\vue.config
- 在打包的时候修改nginx的配置文件:RuoYi-Cloud\docker\nginx\conf\nginx.conf
最终大汇总
至此,这个ruoyi服务的手工上云过程就完成了!
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123004798