微服务
阿里
阿里nacos
注册中心,配置中心
spring cloud gateway网关
公共服务
阿里sentinel
面向分布式、多语言异构化服务架构的流量治理组件
阿里seata
是一款开源的分布式事务解决方案
nginx
静态资源服器
反向代理
ruoyi-cloud部署架构
VM配置
网络类型: nat模式
网关:192.168.19.1
当前主机: windows: 192.168.19.2
以太网适配器 VMware Network Adapter VMnet8的地址
宿主机:centos7: 192.168.19.42
ruoyi-cloud部署
下载
参考文档
准备工作
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
模块介绍
打开运行基础模块(启动没有先后顺序)
RuoYiGatewayApplication (网关模块 必须)
RuoYiAuthApplication (认证模块 必须)
RuoYiSystemApplication (系统模块 必须)
RuoYiMonitorApplication (监控中心 可选)
RuoYiGenApplication (代码生成 可选)
RuoYiJobApplication (定时任务 可选)
RuoYFileApplication (文件服务 可选)
微服务中间件
redis
参考docker
mysql
docker-compose文件
#定义挂载点
volumes:
- ./mysql/conf/my.cnf:/etc/my.cnf
- ./mysql/data:/var/lib/mysql
- ./mysql/initdb:/docker-entrypoint-initdb.d
- ./mysql/mysql-files:/var/lib/mysql-files
environment:
MYSQL_ROOT_PASSWORD: sasa
MYSQL_DATABASE: ry-cloud
./mysql/initdb:/docker-entrypoint-initdb.d
实始化脚本
./mysql/initdb
存放从ruoyi-cloud中的sql
ry_seata_20210128.sql脚本创建ry-seata数据库
ry_config_20220929.sql脚本创建ry-config数据库
修改ry_config_20220929.sql
将其中的localhost更为宿主机的ip地址
修改连接mysql的root用户对应密码,原密码是password,改为sasa
MYSQL_DATABASE: ry-cloud
创建ry-cloud数据库,数据来源ry_20220814.sql,quartz.sql脚本
在./mysql/initdb中添加init.sql脚本
CREATE USER 'root'@'%' IDENTIFIED BY 'sasa'; GRANT All privileges ON `ry-cloud`.* TO 'root'@'%'; GRANT All privileges ON `ry-config`.* TO 'root'@'%'; GRANT All privileges ON `ry-seata`.* TO 'root'@'%'; flush privileges;
nacos
docker-compose.yml
修改了zking-mysql配置
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
interval: 5s
timeout: 10s
retries: 10
healthcheck:健康检查
test执行健康检查的命令,如果ping有结果,通过健康检查
interval: 频率
timeout: 超时
retries:重复最大次数
zking-nacos:
image: nacos/nacos-server:v2.2.0
container_name: zking-nacos
restart: always
depends_on:
zking-mysql:
condition: service_healthy
ports:
- 8848:8848
- 9848:9848
- 9849:9849
environment:
- JVM_XMS=256m
- JVM_XMX=256m
- MODE=standalone
- PREFER_HOST_MODE=hostname
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=zking-mysql
- MYSQL_SERVICE_DB_NAME=ry-config
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=sasa
volumes:
- ./nacos/logs:/home/nacos/logs
networks:
- net-ry
depends_on: zking-mysql: condition: service_healthy
依赖zking-mysql服务,service_healthy一直等到zking-mysql处于healthy状态
ports:
8848:8848
9848:9848
9849:9849
在nacos2.x中监听端口8848,第二个在第一个基础+1000,第三个+1001
environment环境变量
SPRING_DATASOURCE_PLATFORM=mysql 指定外部数据源为mysql其值可以为:mysql / 空
MYSQL_SERVICE_HOST=zking-mysql 指定mysql服器地址
MYSQL_SERVICE_DB_NAME=ry-config 配置中心对应的数据库,原来从nacos的源码中获取,现来源ruoyi-cloud中ry_config_20220929.sql脚本
MYSQL_SERVICE_USER=root 用户名
MYSQL_SERVICE_PASSWORD=sasa 密码
sentinel
流量卫兵
流量控制
熔断降级
docker-compose.yml
zking-sentinel:
image: bladex/sentinel-dashboard:1.8.0
container_name: zking-sentinel
restart: always
ports:
- 8719:8719
- 8858:8858
networks:
- net-ry
ports:
8719:8719 是项目与sentinel控制台通讯端口
8858:8858 是sentinel控制台端口
测试
docker logs zking-sentinel
在浏览器中输入:http://宿主机的地址:8858/
用户名:sentinel
密码:sentinel
微服务部署
部署人员
可以由开发人员,直接部署
运维人员部署
部署方法
idea中直接部署
打包生成jar文件部署
idea中运行微服务项目
使用idea打开ruoyi-cloud项目
ruoyi-gateway
修改ruoyi-gateway中bootstrap.yml文件
将所有的127.0.0.1改为你宿主机的ip地址,192.168.19.8
dashboard: 127.0.0.1:8718中的端口改为8719,与zking-sentinel服务绑定端口一致
运行RuoYiGatewayApplication
验证方式一:在服务面板中查看启动信息
验证方式二:在nacos服务列表中要有ruoyi-gateway这个服务
ruoyi-auth
修改ruoyi-auth中bootstrap.yml文件
将所有的127.0.0.1改为你宿主机的ip地址,192.168.19.8
运行RuoYiAuthApplication
验证方式一:在服务面板中查看启动信息
验证方式二:在nacos服务列表中要有ruoyi-auth这个服务
ruoyi-system
修改ruoyi-system中bootstrap.yml文件
将所有的127.0.0.1改为你宿主机的ip地址,192.168.19.8
修改nacos配置列表中的ruoyi-system-dev.yml
# 主库数据源
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.19.8:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: sasa
-
将password: password改为 password:sasa
运行RuoYiSystemApplication
验证方式一:在服务面板中查看启动信息
验证方式二:在nacos服务列表中要有ruoyi-system这个服务
微服务注册
将微服务部署到宿主机中
使用idea或maven将微服务打包
idea
选择ruoyi中的package,打包生成jar
maven
转到ruoyi目录
转到ruoyi-相关服务中的文件夹: mvn package
按给定资料创建Dockerfile文件,准备相应的jar
ry-6.docker-compose-2.yml:将jar编译生成相应的镜像,然后再运行
docker-compose -f ry-6.docker-compose-2.yml up -d
nginx部署
docker-compose.yml
version: "3.8"
services:
zking-nginx:
#定义主机名
container_name: zking-nginx
#使用的镜像
image: nginx
#容器的映射端口
ports:
- 80:80
#定义挂载点
volumes:
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/html:/usr/share/nginx/html
#指定容器网络
networks:
- net-ry
#docker 重启后,容器自启动
restart: always
networks:
net-ry:
driver: bridge
修改nginx\conf\nginx.conf文件
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://ruoyi-gateway:8080/; #设置代理转发地址
}
127.0.0.1指定ruoyi-gateway网关服务所在地址或服务名
运行nginx的docker-compsoe
docker-compose -f ry-7.docker-compose-3.yml up -d
验证
docker logs zking-nginx
ruoyi-cloud的前端部署
在windows中打开RuoYi-Cloud-v3.6.2\ruoyi-ui
安装依赖
npm install
打包正式环境
# 打包正式环境
npm run build:prod
其打包结果RuoYi-Cloud-v3.6.2\ruoyi-ui\dist生成打包文件,将这些打包zip文件:dist.zip
前端部署
将dist.zip上传到nginx\html文件夹中,然后解压即可
测试
重启gateway后如果报请求超时多刷新几次就行
小结
ry-4.docker-compose-1.yml
zking-redis
zking-mysql
zking-nacos
zking-sentinel
ry-6.docker-compose-2.yml
ruoyi-gateway
ruoyi-auth
ruoyi-system
ry-7.docker-compose-3.yml
zking-nginx