主题
配置
由于目前的租户架构使用域名识别租户,需要先区分中央域名和租户域名,并配置中央域名。
php
TENANT_CENTRAL_DOMAIN=你的中央域名,例如 pro.catchadmin.com域名配置只填写主机名,例如 pro.catchadmin.com、tenant1.example.com,无需填写 http://、https:// 或端口号。
本地开发
本地开发时,中央后台可以继续使用 127.0.0.1 或 localhost,租户域名可以使用 nip.io 这类可解析到本机的域名,例如:
text
tenant1.127.0.0.1.nip.io访问时可以携带本地服务端口,例如:
text
http://tenant1.127.0.0.1.nip.io:8000后台创建租户时,域名字段仍只填写 tenant1.127.0.0.1.nip.io。
域名 DNS 校验会根据 Laravel 的运行环境执行:APP_ENV=production 时创建租户会检查域名解析,本地和测试环境可以直接使用开发域名完成联调。
队列监控
在根目录的 .env 文件默认使用队列监控的,如果不想监控队列任务,则配置关闭即可
php
TENANCY_QUEUE_MONITOR=true租户迁移参数
创建租户时会在租户数据库中执行初始化迁移。默认配置如下:
php
'global_migration_parameters' => [
'--force' => true,
],如果项目中存在只属于中央后台的迁移,建议把租户初始化需要执行的迁移单独放到租户迁移目录,并指定迁移路径:
php
'global_migration_parameters' => [
'--force' => true,
'--path' => [database_path('migrations/tenant')],
'--realpath' => true,
],这样创建租户时只会执行明确的租户迁移。
日志通道
默认会隔离 daily、single、query 这几个文件日志通道:
php
'logging' => [
'channels' => [
'daily', 'single', 'query',
],
'suffix_base' => 'tenant-',
],自定义 tenancy.logging.channels 时,建议填写带 path 配置的文件日志通道。stack、stderr、syslog 等通道可以继续用于 Laravel 日志系统,租户日志目录隔离主要作用在文件日志通道上。
单独数据库实例
如果需要给租户添加单独的租户,需要在 config/database.php 中配置单独数据库链接实例。
php
// 这里做演示,实例单独实例链接名称需要自己定义
return [
'connections' => [
'tenant_connection' => [
'driver' => 'mysql',
'host' => env('DB_TENANT_HOST', '127.0.0.1'),
'port' => env('DB_TENANT_PORT', '3306'),
'database' => env('DB_TENANT_DATABASE', 'forge'),
'username' => env('DB_TENANT_USERNAME', 'forge'),
'password' => env('DB_TENANT_PASSWORD', ''),
'unix_socket' => env('DB_TENANT_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
];然后在后台租户管理给对应的租户配置对用的数据库实例,如下图 