Skip to content

配置

由于目前的租户架构使用域名识别租户,需要先区分中央域名和租户域名,并配置中央域名。

php
TENANT_CENTRAL_DOMAIN=你的中央域名,例如 pro.catchadmin.com

域名配置只填写主机名,例如 pro.catchadmin.comtenant1.example.com,无需填写 http://https:// 或端口号。

本地开发

本地开发时,中央后台可以继续使用 127.0.0.1localhost,租户域名可以使用 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,
],

这样创建租户时只会执行明确的租户迁移。

日志通道

默认会隔离 dailysinglequery 这几个文件日志通道:

php
'logging' => [
    'channels' => [
        'daily', 'single', 'query',
    ],

    'suffix_base' => 'tenant-',
],

自定义 tenancy.logging.channels 时,建议填写带 path 配置的文件日志通道。stackstderrsyslog 等通道可以继续用于 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,
        ],
    ],
];

然后在后台租户管理给对应的租户配置对用的数据库实例,如下图 多租户-数据库实例