微服务-ruoyi-cloud部署

微服务

阿里

  • 阿里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部署

下载

RuoYi-Cloud 标签 - Gitee.com

参考文档

环境部署 | RuoYi

准备工作

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

  • 官方:home | 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控制台端口

微服务部署

  • 部署人员

    • 可以由开发人员,直接部署

    • 运维人员部署

  • 部署方法

    • 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文件夹中,然后解压即可

  • 测试

http://192.168.72.42/

重启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