当前位置 : 主页 > 编程语言 > java >

集成并部署开源若依后台系统(微服务版)到腾讯云

来源:互联网 收集:自由互联 发布时间:2022-08-15
使用若依提供的开源免费的后天管理系统,搭建自己的后台,方便自己做二次开发,权限管理系统其实时一个公共的东西,有人开发好了且开源了,我们拿过来用就是。毕竟互联网的真

使用若依提供的开源免费的后天管理系统,搭建自己的后台,方便自己做二次开发,权限管理系统其实时一个公共的东西,有人开发好了且开源了,我们拿过来用就是。毕竟互联网的真谛就是资源共享的嘛。

我将会把这套基于微服务的项目部署到腾讯云,作为自己的部分服务。非常感谢这么好的项目能开源。接下来看一下若依的后台管理系统到底是什么样的。

平台简介

若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。

  • 采用前后端分离的模式,微服务版本前端(基于​​RuoYi-Vue​​)。
  • 后端采用Spring Boot、Spring Cloud & Alibaba。
  • 注册中心、配置中心选型Nacos,权限认证使用Redis。
  • 流量控制框架选型Sentinel,分布式事务选型Seata。

系统模块

com.ruoyi
├── ruoyi-ui // 前端框架 [80]
├── ruoyi-gateway // 网关模块 [8080]
├── ruoyi-auth // 认证中心 [9200]
├── ruoyi-api // 接口模块
│ └── ruoyi-api-system // 系统接口
├── ruoyi-common // 通用模块
│ └── ruoyi-common-core // 核心模块
│ └── ruoyi-common-datascope // 权限范围
│ └── ruoyi-common-datasource // 多数据源
│ └── ruoyi-common-log // 日志记录
│ └── ruoyi-common-redis // 缓存服务
│ └── ruoyi-common-security // 安全模块
│ └── ruoyi-common-swagger // 系统接口
├── ruoyi-modules // 业务模块
│ └── ruoyi-system // 系统模块 [9201]
│ └── ruoyi-gen // 代码生成 [9202]
│ └── ruoyi-job // 定时任务 [9203]
│ └── ruoyi-file // 文件服务 [9300]
├── ruoyi-visual // 图形化管理模块
│ └── ruoyi-visual-monitor // 监控中心 [9100]
├──pom.xml // 公共依赖

架构图

集成并部署开源若依后台系统(微服务版)到腾讯云_springcould

内置功能

  • 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  • 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
  • 岗位管理:配置系统用户所属担任职务。
  • 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  • 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  • 参数管理:对系统动态配置常用参数。
  • 通知公告:系统通知公告信息发布维护。
  • 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  • 登录日志:系统登录日志记录查询包含登录异常。
  • 在线用户:当前系统中活跃用户状态监控。
  • 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  • 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
  • 系统接口:根据业务代码自动生成相关的api接口文档。
  • 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  • 在线构建器:拖动表单元素生成相应的HTML代码。
  • 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
  • 相信到了这里就能了解这套系统了,其实就是一个开源的后台管理系统,实现了一些基础功能,这这公共的东西也都是大家所需要的。话不多说,撸起袖子开始干吧!

    安装基础软件

    • 1、mysql(数据库)
    • 2、redis(缓存)
    • 3、minio(也可以选择fastdfs)【文件存储】
    • 4、nacos(注册/配置中心)

    这些是需要的最少的组件,我已经安装好了,如果不知道的可以查看一下怎么安装。

    配置防火墙

    我一般都是配置一个IP段,只能让这个IP段的网络可以访问云上资源。云上的端口不限制IP(设置为0.0.0.0)非常危险,资源随时可能被黑客那个,最终可能沦为肉鸡(被拿去挖矿)。

    配置规则

    源IP填写为27.9.8.0/24 表示27.9.8.*

    源IP填写为27.9.0.0/16 表示27.9.*.*

    集成并部署开源若依后台系统(微服务版)到腾讯云_微服务_02

    要部署的模块

    • 注册与配置中心(nacos) 已经部署
    • 基础服务-文件服务(文件上传下载等)
    • 基础服务-代码生成服务(代码生成,方便二开)
    • 基础服务-任务调度中心(定时任务调度)
    • 业务服务-系统管理(用户角色权限等管理)
    • 认证中心(auth),用于用户权限认证
    • 网关(gateway),作为微服务对外的统一入口,一般内部网关前还会加一层nginx
    • 扩展服务(监控中心,暂时不部署)
    • 前端服务(打成静态文件,放在nginx静态文件目录)

    文件服务启动修改

    首先看config目录下的文件,发现就是我们要配置的,于是定义了如下配置文件

    # Tomcat
    server:
    port: 9201

    # Spring
    spring:
    application:
    # 应用名称
    name: ruoyi-system
    profiles:
    # 环境配置
    active: dev
    cloud:
    nacos:
    discovery:
    # 指定命名空间
    namespace: ${spring.profiles.active}
    # 服务注册地址
    server-addr: 你的IP地址:8848
    config:
    # 指定命名空间
    namespace: ${spring.profiles.active}
    # 配置中心地址
    server-addr: 你的IP地址:8848
    # 配置文件格式
    file-extension: yml
    # 共享配置
    shared-configs:
    - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

    注意,服务所有的配置bootstrap.yml配置文件除了服务名和端口不一样,其余都是一样的

    nacos配置文件ruoyi-file-dev.yml(项目+环境+后缀)

    minio:
    url: http://162.14.74.11:9000
    accessKey: minioadmin
    secretKey: minioadmin?
    bucketName: ry-file

    file:
    path: /myupload
    prefix: c:/upload
    domain:

    fdfs:
    domain:

    文件上传实现有几种,有minio/fastdfs/local 使用@Primary选择哪个为要使用的,默认是local

    启动项目,并测试文件上传接口

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_03

    测试文件上传

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_04

    查看minio上的图片

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_05

    预览图片

    集成并部署开源若依后台系统(微服务版)到腾讯云_微服务_06

    生成代码服务

    这个服务里面就是操作mysql的tables等表,实现从数据库的表和字段生成代码,通过模板渲染

    配置文件就是配置了数据库相关和redis相关配置, nacos上的配置文件如下

    # spring配置
    spring:
    datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://162.14.74.11:3306/permission_mgr_sys?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    username: root
    password: root
    redis:
    host: 162.14.74.11
    port: 6379
    database: 0
    username:
    password:
    lettuce:
    pool:
    enabled: false
    jedis:
    pool:
    enabled: true
    max-idle: 8
    min-idle: 0
    max-active: 8
    max-wait: -1ms

    # mybatis配置
    mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ruoyi.gen.domain
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath:mapper/**/*.xml

    # swagger配置
    swagger:
    title: 代码生成接口文档
    license: Powered By ruoyi
    licenseUrl: https://ruoyi.vip

    # 代码生成
    gen:
    # 作者
    author: ruoyi
    # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
    packageName: com.ruoyi.system
    # 自动去除表前缀,默认是false
    autoRemovePre: false
    # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
    tablePrefix: sys_

    启动代码生成服务

    集成并部署开源若依后台系统(微服务版)到腾讯云_springcould_07

    任务调度中心

    实现任务调度的服务

    配置文件就是配置了数据库相关和redis相关配置, nacos上的配置文件如下

    # spring配置
    spring:
    redis:
    host: 162.14.74.11
    port: 6379
    password:
    datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://162.14.74.11:3306/permission_mgr_sys?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: root

    # mybatis配置
    mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ruoyi.job.domain
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath:mapper/**/*.xml

    # swagger配置
    swagger:
    title: 定时任务接口文档
    license: Powered By ruoyi
    licenseUrl: https://ruoyi.vip

    启动任务调度模块

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_08

    系统管理模块

    也就是我们的RBAC权限控制中心,配置文件同样是数据库和redis

    # spring配置
    spring:
    redis:
    host: 162.14.74.11
    port: 6379
    password:
    datasource:
    druid:
    stat-view-servlet:
    enabled: true
    loginUsername: admin
    loginPassword: 123456
    dynamic:
    druid:
    initial-size: 5
    min-idle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    filters: stat,slf4j
    connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
    datasource:
    # 主库数据源
    master:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://162.14.74.11:3306/permission_mgr_sys?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: root
    # 从库数据源
    # slave:
    # username:
    # password:
    # url:
    # driver-class-name:
    # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭

    # seata配置
    seata:
    # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启
    enabled: false
    # Seata 应用编号,默认为 ${spring.application.name}
    application-id: ${spring.application.name}
    # Seata 事务组编号,用于 TC 集群名
    tx-service-group: ${spring.application.name}-group
    # 关闭自动代理
    enable-auto-data-source-proxy: false
    # 服务配置项
    service:
    # 虚拟组和分组的映射
    vgroup-mapping:
    ruoyi-system-group: default
    config:
    type: nacos
    nacos:
    serverAddr: 127.0.0.1:8848
    group: SEATA_GROUP
    namespace:
    registry:
    type: nacos
    nacos:
    application: seata-server
    server-addr: 127.0.0.1:8848
    namespace:

    # mybatis配置
    mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ruoyi.system
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath:mapper/**/*.xml

    # swagger配置
    swagger:
    title: 系统模块接口文档
    license: Powered By ruoyi
    licenseUrl: https://ruoyi.vip

    启动系统管理模块

    集成并部署开源若依后台系统(微服务版)到腾讯云_springcould_09


    认证中心模块

    是要是登录,登出,权限认证的入口功能,认证中心直接调用系统管理获取并校验权限等, 这个服务只引入redis就行了

    spring:
    redis:
    host: 162.14.74.11
    port: 6379
    password:

    启动认证中心

    集成并部署开源若依后台系统(微服务版)到腾讯云_springcould_10

    网关模块

    所有微服务的统一入口,因为多个微服务会有多个服务,前端不可能调用所有,所有通过统一网关进行转发即可。网关还可以做一系列的拦截操作,做自己想做的事情。

    配置文件主要使用redis即可,

    spring:
    redis:
    host: 162.14.74.11
    port: 6379
    password:
    cloud:
    gateway:
    discovery:
    locator:
    lowerCaseServiceId: true
    enabled: true
    routes:
    # 认证中心
    - id: ruoyi-auth
    uri: lb://ruoyi-auth
    predicates:
    - Path=/auth/**
    filters:
    # 验证码处理
    - CacheRequestFilter
    - ValidateCodeFilter
    - StripPrefix=1
    # 代码生成
    - id: ruoyi-gen
    uri: lb://ruoyi-gen
    predicates:
    - Path=/code/**
    filters:
    - StripPrefix=1
    # 定时任务
    - id: ruoyi-job
    uri: lb://ruoyi-job
    predicates:
    - Path=/schedule/**
    filters:
    - StripPrefix=1
    # 系统模块
    - id: ruoyi-system
    uri: lb://ruoyi-system
    predicates:
    - Path=/system/**
    filters:
    - StripPrefix=1
    # 文件服务
    - id: ruoyi-file
    uri: lb://ruoyi-file
    predicates:
    - Path=/file/**
    filters:
    - StripPrefix=1

    # 安全配置
    security:
    # 验证码
    captcha:
    enabled: true
    type: math
    # 防止XSS
    xss:
    enabled: true
    excludeUrls:
    - /system/notice
    # 不校验白名单
    ignore:
    whites:
    - /auth/logout
    - /auth/login
    - /auth/register
    - /*/v2/api-docs
    - /csrf

    启动网关服务

    集成并部署开源若依后台系统(微服务版)到腾讯云_springcould_11

    前端服务

    前端使用vue技术栈实现,我们首先需要安装node.js

    下载地址未:​​https://nodejs.org/en/​​

    安装node.js后查看是否安装成功

    集成并部署开源若依后台系统(微服务版)到腾讯云_springcould_12

    配置淘宝镜像加速

    # 配置淘宝镜像
    npm config set registry https://registry.npm.taobao.org

    # 查看镜像
    npm config get registry

    切换到ruoyi-ui目录,检查配置,安装依赖,启动项目

    配置后端接口代理

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_13

    安装并启动服务

    # 开发环境
    npm run dev

    # 生产环境 打成静态文件 放在nginx
    npm run build:prod

    本地启动成功

    登录页面

    集成并部署开源若依后台系统(微服务版)到腾讯云_微服务_14

    首页

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_15

    项目发布到腾讯云

    编写dockerfile, 限制一下内存,云服务器内存有限, 其他的文件都一样

    # 基础镜像
    FROM openjdk:8-jre
    # author
    MAINTAINER ruoyi

    # 挂载目录
    VOLUME /home/ruoyi
    # 创建目录
    RUN mkdir -p /home/ruoyi
    # 指定路径
    WORKDIR /home/ruoyi
    # 复制jar文件到路径
    COPY ./jar/ruoyi-modules-job.jar /home/ruoyi/ruoyi-modules-job.jar
    # 启动定时任务服务
    ENV JAVA_OPT="-Xmx256m -Xms256m -Xmn128m"
    CMD java $JAVA_OPT -jar ruoyi-modules-job.jar

    编写构建镜像脚本

    docker build -t ruoyi-modules-job -f dockerfile .

    编写启动脚本

    docker run -itd --restart=always --name ruoyi-modules-job -p 9203:9203 -e "SPRING_PROFILES_ACTIVE=prod" ruoyi-modules-job

    编写停止脚本

    docker rm -f ruoyi-modules-job

    脚本授权

    chmod +x ./*.sh

    因为是自己的云服务器,内存较小,搞这么多服务已经不容易了,就是用这种比较老实的方法干吧

    配置nginx

    #user nobody;
    worker_processes 1;


    events {
    worker_connections 1024;
    }


    http {
    include mime.types;
    default_type application/octet-stream;

    sendfile on;

    keepalive_timeout 65;

    server {
    listen 80;
    server_name localhost;

    location / {
    root /usr/share/nginx/html; #指定容器中的路径
    index index.html index.htm;
    }


    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://162.14.74.11:8080/;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html; #指定容器中的路径
    }

    }
    include /etc/nginx/conf.d/*.conf;

    }

    云服务器启动项目,使用docker

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_16

    云服务器首页查看

    集成并部署开源若依后台系统(微服务版)到腾讯云_权限管理_17

    小结

    本次集成微服务版本的若依后台管理,其实过程还是非常简单个清晰的,当然如果自己实现也是可以的,但毕竟还是要花很多的时间。

    在该项目上面做二次开发,应该也还是比较快的。总的来说,这个项目对于个人和中小企业来说还是非常不错的,因为大企业一般都是会自己实现。

    到此就整的结束了,下次再见。。。

    上一篇:java之循环结构精选
    下一篇:没有了
    网友评论