vortechron/multi-tenant

使用相同的Laravel安装运行多个网站,同时保持租户特定数据的分离,以实现完全独立的多个域名设置。


README

Backers on Open Collective Sponsors on Open Collective Packagist build status codecov Packagist Codacy Badge Join our Discord server Mentioned in Awesome Laravel

这是一个不显眼的Laravel包,可以使您的应用实现多租户。为多个网站提供服务,每个网站都有来自同一代码库的一个或多个主机名。但资产、数据库的分离以及对每个租户逻辑的重写都非常清晰。

适用于喜欢为不同客户重复使用功能的市场公司或正在构建下一个软件即服务的初创公司。

提供

  • 与出色的Laravel框架集成。
  • 事件驱动的可扩展架构。
  • 可选的 - 与网络服务器的紧密集成。
  • 添加租户特定配置、代码、路由等的能力。

数据库分离方法

  • 一个系统数据库和分离的租户数据库(默认)。
  • 系统数据库中表前缀。
  • 或者..手动,按照您想要的方式,通过监听事件。

完整文档涵盖了不仅仅是安装和配置。

要求,推荐环境

  • 最新稳定和LTS Laravel版本。
  • PHP 7+。
  • Apache或Nginx。
  • MySQL、MariaDB或PostgreSQL。

请参阅文档中的完整要求

安装

composer require hyn/multi-tenant

自动服务注册

使用自动发现,租户包将被Laravel自动检测。

手动服务注册

如果您想禁用网络服务器集成或更喜欢手动集成,请在您的应用composer.json中设置dont-discover,如下所示

{
    "extra": {
        "laravel": {
            "dont-discover": "hyn/multi-tenant"
        }
    }
}

如果您禁用自动发现,您将能够自己配置提供者。

在您的config/app.php中注册服务提供者

    'providers' => [
        // [..]
        // Hyn multi tenancy.
        Hyn\Tenancy\Providers\TenancyProvider::class,
        // Hyn multi tenancy webserver integration.
        Hyn\Tenancy\Providers\WebserverProvider::class,
    ],

部署配置

首先发布配置和迁移文件,以便您可以根据需要对其进行修改

php artisan vendor:publish --tag tenancy

打开config/tenancy.phpconfig/webserver.php文件,并根据需要进行修改。

确保您的系统连接已在database.php中配置。如果您没有覆盖系统连接名称,则使用default连接。

现在运行

php artisan migrate --database=system

这将运行所需的系统数据库迁移。

赞助商

感谢所有赞助商!🙏 [成为赞助商]

赞助商

通过成为赞助商来支持此项目。您的标志将显示在此处,并带有链接到您的网站。[成为赞助商]

许可证和贡献

此包在MIT许可证下提供。如果您有兴趣进行贡献,请确保阅读贡献指南

测试

使用以下命令运行测试

vendor/bin/phpunit

如果使用MySQL,请使用

LIMIT_UUID_LENGTH_32=1 vendor/bin/phpunit

请警告,运行测试将完全重置您当前的应用程序,删除租户和系统数据库,并删除Laravel目录中的tenancy.json文件。

更改

所有更改均包含在变更日志中。

联系

通过以下方式个人联系: