微服务-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控制台端口

  • 测试

    • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95218.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win7能看到Win10打印机但连接不上

解决方案:方法1.修改注册表(适用于错误代码0x0000011b)修改注册表(关键步骤):许多情况下,这是由于Win10的一项隐私设置导致的1。在Win10电脑上,按 Win R,输入 regedit 并…

如何构建灵活、可控、可扩展的多云网络底座

在 AI 和数字化的浪潮中,越来越多的企业不再满足于单一云环境,而是同时使用 多家公有云、自建IDC、甚至边缘节点。这种多云模式虽然灵活,但也带来了一个新的挑战:如何让跨云、跨地的数据流动变得高效、安全、可控?答案…

幂等性设计艺术:在分布式重试风暴中构筑坚不可摧的防线

幂等性设计艺术:在分布式重试风暴中构筑坚不可摧的防线​​2023年某支付平台凌晨故障​​:由于网络抖动导致支付指令重复发送,系统在2分钟内处理了​​17万笔重复交易​​,引发​​4.2亿资金风险​​。事故根本原因:​…

从零开始理解NDT算法的原理及应用

1. 概述 NDT,全称 Normal Distributions Transform(正态分布变换),是一种广泛使用的点云配准算法,它的核心思想与ICP截然不同:NDT不直接计算点与点之间的对应关系,而是通过概率模型来描述和匹配…

艾体宝案例 | 数据驱动破局:DOMO 如何重塑宠物零售门店的生存法则

某连锁宠物店店长紧盯着电脑屏幕上的Excel表格,手指机械地在键盘上敲击出“CtrlC/V”的组合键——这是她第17次尝试将三个不同系统的数据拼凑到一起。门店POS机导出的销售记录、会员系统的消费偏好、库存管理的临期预警,这些本应串联起门店运营全貌的关键…

极飞科技AI智慧农业实践:3000亩棉田2人管理+产量提15%,精准灌溉与老农操作门槛引讨论

在新疆尉犁县的棉田里,两架农业无人机正沿着设定航线低空飞行,它们掠过之处,传感器实时传回土壤湿度和作物长势数据——这片3000亩的棉田,如今只需要两名90后新农人通过手机管理,产量却比传统种植模式提高了15%。这不是…

企业级-搭建CICD(持续集成持续交付)实验手册

搭建CI/CD(持续集成/持续交付)企业示例 为了让容器构建镜像并可以持续集成,可以自动上传到Harbor仓库;并且业务主机可以通过CD自动从仓库中下载镜像latest版本并实现业务更新。1.环境部署 1.1 环境搭建业务IP域名GitLab172.25.254.50gitlab.dhj.orgJenki…

吃透《数据结构》C 语言版:线性表的类型定义详解

作为数据结构的入门章节,线性表就像 “地基” 一样重要,而第二章 2.3 节的 “线性表的类型定义”,更是理解后续操作(插入、删除、查找等)的核心前提。今天就结合自己的学习笔记,用通俗的语言拆解这个知识点…

文件系统中的核心数据结构

宏观上文件系统在kernel的形态文件系统运作流程按照:vfs->磁盘缓存->实际磁盘文件系统->通用块设备层->io调度层->块设备驱动层->磁盘。具体流程的详细展现如下如如何理解文件系统中的数据结构?linux中文件系统还有几种核心数据结构分别是super_b…

TDengine与StarRocks在技术架构和适用场景上有哪些主要区别?

TDengine 与 StarRocks 作为国产数据库领域的代表性产品,分别专注于时序数据处理和高性能分析场景,在技术架构和适用场景上存在显著差异。以下从核心架构、数据模型、性能特点及典型应用场景等方面进行对比分析:🏗️ ​​一、技术…

Qt事件_xiaozuo

Qt事件Qt 的事件机制是其实现用户交互和系统响应的核心框架,基于事件驱动模型构建。以下从五个关键方面详细解释其工作原理和用法:1. 事件(QEvent)的定义与分类事件本质:事件是 QEvent 类或其子类的实例,用…

运动控制技术:自动化与智能驱动的核心

一、运动控制概述运动控制技术是自动化技术和电气拖动技术的融合,以工控机、PLC、DSP等为控制器的运动控制技术融合了微电子技术、计算机技术、检测技术、自动化技术以及伺服控制技术等学科的新成果,在工业生产中起着极为重要的作用。早期的运动控制技术…

链表实战指南:手动实现单链表与双链表的接口及OJ挑战(含完整源码)

文章目录一、链表的概念二、链表的分类三、手动实现单链表1.链表的初始化2.链表的打印3.申请新的节点大小空间4.链表的尾插5.链表的头插6.链表的尾删7.链表的头删8.链表的查找9.在指定位置之前插入数据10.在指定位置之后插入数据11.删除指定节点12.删除指定节点之后的数据13.销…

Spring 事件驱动编程初探:用 @EventListener 轻松处理业务通知

一、核心概念与模型Spring 的事件机制是观察者模式(也叫发布-订阅模型)的一种典型实现。它主要由三个核心部分组成:事件 (Event): 承载信息的对象,通常是某种状态变化的通知。可以是继承 ApplicationEvent 的类&#x…

无人机也能称重?电力巡检称重传感器安装与使用指南

在无人机电力巡检中,工程师们常常面临一个棘手难题:如何精确知道新架设或老旧缆线的实际负重? 传统依靠老师傅“肉眼估算”的方法不仅风险极高,而且数据极不准确,给电网安全埋下巨大隐患。难道没有更科学的方法吗&…

第二阶段WinForm-8:特性和反射,加密和解密,单例模式

1_预处理指令 (1)源代码指定了程序的定义,预处理指令(preprocessor directive)指示编译器如何处理源代码。例如,在某些情况下,我们希望编译器能够忽略一部分代码,而在其他情况下&am…

基于mac的智能语音处理与应用开发-环境部署

上一次写文章还是上一次,时隔一年再次开启学习之路。新机mac没有开发环境,在gpt老师的指导下开始学习之路。 mac开发环境的部署参考了b站程序员云谦和Clover-You的视频教程,然后结合自身及gpt老师的帮助现在开始部署。 g老师的&#x1f34e…

Java中使用正则表达式的正确打开方式

正则表达式基础语法Java正则表达式基于java.util.regex包,核心类是Pattern和Matcher。基本语法遵循标准正则规范:. 匹配任意单个字符(除换行符)\d 匹配数字,等价于 [0-9]\w 匹配单词字符,等价于 [a-zA-Z0-9…

Docker中Mysql容器忽略大小写

场景说明 在数据迁移场景中,从一个数据库中将数据迁移到另一个数据,经常会遇到,两个不同数据库之间,一个默认忽略大小写,一个默认不忽略大小写,导致实际业务层服务进行数据库访问时,切换数据库之…

神经网络激活函数:从ReLU到前沿SwiGLU

摘要 本文全面介绍了神经网络中常用的激活函数,包括Sigmoid、Tanh、ReLU等传统函数,以及2017年后出现的Swish、Mish、SwiGLU等新兴函数。每个函数均提供数学定义、优缺点分析、Python实现代码和可视化图像,并附有实际应用建议和性能对比数据,帮助读者根据具体任务选择合适…