微服务-ruoyi-cloud部署

发布于:2025-08-31 ⋅ 阅读:(23) ⋅ 点赞:(0)

微服务

阿里

  • 阿里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控制台端口

  • 测试

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

  • 测试

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