【问题标题】:Managing Multiple Websites with a Single Laravel Codebase使用单个 Laravel 代码库管理多个网站
【发布时间】:2019-11-14 13:24:43
【问题描述】:

我的团队最近整理了一个适用于多个网站的 Laravel 代码库。目前,我们将它们作为安装在 centOS7 配置文件上的应用程序运行。

每当需要一个新站点时,我们都会启动一个配置文件,然后将代码克隆进去。代码库很大程度上依赖于包(自定义 laravel 包)。目前,每个站点都引入了我们开发的所有软件包。目前的区别是 1) .env 文件。 2) 主题配置文件(来自一个包,稍后我会谈到)。

我希望能够根据需要提取包,我不想提取我们开发的每个包。我的问题是,有没有办法把每个包裹都拉进去?我正在考虑从 git 中删除 composer.json 文件并将其视为配置文件?我也想过生成composer.json文件。

最终我们希望将 CI/CD 添加到流程中并真正自动化这件事。我真的在努力将代码库保存在一个存储库中。我错了吗?我们是否应该拆分代码库,每个进来的项目一个存储库?但是你必须考虑到更新会变成一场噩梦。

目前,主题是作为包引入的。每个站点都有 composer 文件中的所有主题。该应用程序具有可以登录并将主题设置为活动的管理员用户。不过,我希望它只提取必要的主题资源。

抱歉,我有点啰嗦,但我想知道如何正确扩展应用程序。

非常感谢!

tldr;如何使用一个代码库运行多个网站,同时能够指定不同的所需自定义包?

【问题讨论】:

    标签: php laravel version-control composer-php multi-tenant


    【解决方案1】:

    我还没有实际测试过这个,但是你可以通过定义多个composer.json 文件来完成你想要的。阅读更多关于定义other composer.json files

    然后,在每个composer.json 文件中定义一个different vendor directory示例:

    {
        "config": {
            "vendor-dir": "plugins"
        }
    }
    

    接下来,在每次安装时指定要安装哪个 composer.json 文件,来自文档:

    通过设置 COMPOSER 环境变量,可以将 composer.json 的文件名设置为其他名称。

    来自文档的示例:

    COMPOSER=composer-other.json php composer.phar install
    

    阅读更多specifying the environment

    最后但同样重要的是,您必须为特定的供应商目录引导您的网站或应用程序:

    require __DIR__.'/../custom-vendor-directory/autoload.php';
    

    这可以在您的应用程序的index.php 文件中进行自定义。 original source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2015-10-17
      • 2010-10-12
      相关资源
      最近更新 更多