crsoares/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框架的集成。
  • 事件驱动的可扩展架构。
  • 可选的 - 与Web服务器的紧密集成。
  • 添加特定租户的配置、代码、路由等的能力。

数据库分离方法

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

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

需求,推荐环境

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

请阅读文档中的完整需求

安装

composer require hyn/multi-tenant

自动服务注册

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

手动服务注册

如果您想禁用Web服务器集成或更喜欢手动集成,请在您的应用程序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 tenancy:install

这将运行必要的系统数据库迁移。

支持者

感谢所有支持者!🙏 [成为支持者]

赞助商

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

许可证和贡献

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

测试

使用以下方式运行测试

vendor/bin/phpunit

如果您使用MySQL,请使用

LIMIT_UUID_LENGTH_32=1 vendor/bin/phpunit

请注意,这将创建大量的租户数据库。您可以通过运行与该包具有相同命名约定的bash脚本来轻松删除这些数据库。

bash tests/scripts/clean-local-dbs.sh

请小心,这将完全重置您当前的应用程序,删除租户和系统数据库,并从Laravel目录中删除tenancy.json文件。

更改

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

联系

使用以下方式亲自取得联系;