使用单个Laravel代码库管理多个网站

时间:2019-07-03 19:58:24

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

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

每当需要一个新站点时,我们都会启动一个配置文件,并将代码克隆到其中。代码库在很大程度上取决于软件包(自定义laravel软件包)。当前,每个站点都提取我们开发的所有软件包。当前的区别是1).env文件。和2)主题配置文件(来自程序包,我将在后面介绍)。

我希望能够根据需要提取软件包,我不想提取我们开发的每个软件包。我的问题是,有没有一种方法可以拉入每个包装?我正在考虑从git中删除composer.json文件,并将其视为配置文件?我还考虑过生成composer.json文件。

最终,我们希望将CI / CD添加到该过程中并真正实现此过程的自动化。我真的在努力将代码库保存在一个存储库中。我错了吗?我们是否应该拆分代码库,每个项目一个仓库?但是随后您必须考虑更新已成为噩梦。

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

对不起,如果我走了一点儿,但我想知道如何正确缩放应用程序。

谢谢!

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

1 个答案:

答案 0 :(得分:1)

我还没有实际测试过,但是您可以通过定义多个composer.json文件来完成所需的工作。阅读有关定义other composer.json files

的更多信息

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

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

接下来,在每次安装中,从文档中指定要安装的composer.json文件:

  

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

文档示例:

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

有关specifying the environment的更多信息。

最后但并非最不重要的是,您将必须针对特定的供应商目录引导网站或应用程序:

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

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