直接跳到内容

环境搭建

依赖安装

shell
# 进入多租户模块
$ cd ab-tenant

# 多租户模块安装到Maven本地仓库
$ mvn clean install -DskipTests

引入依赖

agile-bpm/ab-spring-boot/ab-spring-boot-app/pom.xml

xml
<!-- 多租户的定时计划调度 -->
<dependency>
    <groupId>com.dstz</groupId>
    <artifactId>ab-tenant-crontab-starter</artifactId>
    <version>${project.version}</version>
</dependency>

<!-- 多租户管理端 -->
<dependency>
    <groupId>com.dstz</groupId>
    <artifactId>ab-tenant-manager</artifactId>
    <version>${project.version}</version>
</dependency>

<!-- 多租户配置核心逻辑 -->
<dependency>
    <groupId>com.dstz</groupId>
    <artifactId>ab-tenant-starter</artifactId>
    <version>${project.version}</version>
</dependency>

属性配置

agile-bpm/ab-spring-boot/ab-spring-boot-app/src/main/resources/application.yml

ab:
  cache:
    region:
      # 租户缓存区域配置
      TENANT: PT30M
  schedule:
    # 启用定时计划
    enable: true
  tenant:
    isologic:
      # 开启时将检查隔离列是否存在,不存在将抛出异常   可选配置  默认值:alse
      check-isolation-column: false
      # 隔离列  可选配置  默认值:tenant_id_
      isolation-column: tenant_id_
    # 主租户别名  可选配置  默认值:dstz
    main-tenant-alias: dstz
    web:
      # WEB 端请求的租户别名字段  查找过程:请求头 > Cookie > 请求参数   可选配置  默认值:ab-tenant-alias
      tenant-alias-field: ab-tenant-alias
spring:
  activiti:
    # 关闭Activiti的定时任务
    async-executor-activate: false

物理隔离-执行租户脚本

  1. 租户管理库中执行 ab-tenant/doc/sql/mysql/tenant-full.sql,该脚本中包含创建租户表以及菜单初始化。

逻辑隔离-执行租户脚本

  1. 创建数据库
sql
mysql> CREATE DATABASE xxx DEFAULT CHARACTER SET utf8mb4;
  1. 导入脚本ab-tenant/doc/sql/mysql/逻辑隔离初始化库/agilebpm_full.sql,该脚本中已包含逻辑隔离的表字段。

该脚本中已包含整理好的逻辑隔离字段

打包发布

xml
$ cd agile-bpm

$ mvn clean package -DskipTests

部署

基于域名访问

域名的访问,我们用其前缀作为租户别名,例如xxx.agilebpm.cn,经提取拿到xxx并将其设置到转发头上。

nginx.conf

...
http {
    ...

    # 从域名中提取租户别名
    map $host $tenant_alias {
        ~(\w+). $1;
    }

    server {
        listen 80;
        server_name agilebpm.cn;

        location / {
            try_files $uri $uri/ /index.html last;
            index index.html index.htm;
            root /usr/share/nginx/html/agilebpm-ui;
        }

        location /api/ {
              proxy_pass_header Server;
              proxy_set_header Host $host;
              proxy_redirect off;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Scheme $scheme;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              # 设置租户别名请求头
              proxy_set_header ab-tenant-alias $tenant_alias;

              proxy_pass http://127.0.0.1:8080/;
        }
    }
}

浏览器访问验证

  1. hosts文件中添加映射

关于hosts文件介绍请您移步搜索引擎,这里不在讲述

127.0.0.1   agilebpm.cn
  1. 浏览器访问

访问地址:http://dstz.agilebpm.cn

正常情况下,您将进入登录页面,使用默认用户名和密码登录进入系统。

环境搭建 has loaded