外观
环境搭建
依赖安装
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
物理隔离-执行租户脚本
- 租户管理库中执行
ab-tenant/doc/sql/mysql/tenant-full.sql
,该脚本中包含创建租户表以及菜单初始化。
逻辑隔离-执行租户脚本
- 创建数据库
sql
mysql> CREATE DATABASE xxx DEFAULT CHARACTER SET utf8mb4;
- 导入脚本
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/;
}
}
}
浏览器访问验证
- 在
hosts
文件中添加映射
关于hosts文件介绍请您移步搜索引擎,这里不在讲述
127.0.0.1 agilebpm.cn
- 浏览器访问
正常情况下,您将进入登录页面,使用默认用户名和密码登录进入系统。