【问题标题】:How can I have one Laravel PHP install with multiple projects?如何在一个 Laravel PHP 中安装多个项目?
【发布时间】:2017-02-24 06:05:02
【问题描述】:

我注意到 Laravel 5.3 每个项目平均占用大约 41MB 的磁盘空间。

有没有一种简洁的方式来配置东西,以便在我的 PHP 服务器上安装一次 Laravel(专用于 Laravel 专用的东西),然后让多个项目(一些作为单独的域,一些作为子目录)使用相同的 Laravel实例?

例如,我可以拥有 /usr/share/laravel 并将所有内容都放在那里,但是然后在 /var/www 中,我可以将每个域(/var/www/test1.com、/var/ www/test2.com) 和域 (/var/www/test1.com/project2) 上的子文件夹,然后它们都将使用相同的 /usr/share/laravel。

【问题讨论】:

  • 恕我直言,这样做并没有真正的好处,而且您有时会自找麻烦,因为有时您只是踩到由升级引起的问题,更不用说依赖关系了。除非在你的星球上 1MB 的硬盘空间花费你的腿和肾,否则你会浪费的比你得到的多。

标签: php laravel directory-structure laravel-5.3 multiple-projects


【解决方案1】:

您可以使用符号链接,我从未尝试过,但我想这将涉及为每个应用程序创建单独的目录,然后创建指向共享供应商目录(包括 Laravel)的符号链接。

这将允许您单独对所有应用程序特定文件进行版本控制,但共享依赖项。但请注意,如果您的 composer.json 文件列出了不同的版本,您可能会遇到麻烦。

【讨论】:

    【解决方案2】:

    好吧,我上次尝试的解决方案有点不同。无论如何,我认为这是一个好的或最好的。但到目前为止它一直有效:

    • 首先所有域都加载同一个 laravel 项目
    • 自定义路由服务商

    所以首先对RouteServiceProvider进行更改:

    public function map(Router $router)
    {
           if (strstr(Request::getHost(), 'domain_one')) {
                $router->group([
                    'namespace' => $this->namespace,
                    'middleware' => ['default_middle_wares'],
                ], function ($router) {
                    require app_path('Http/Routes/domain_one.php');
                });
            }
    
            if (strstr(Request::getHost(), 'domain_two')) {
                $router->group([
                    'namespace' => $this->namespace,
                    'middleware' => ['default_middle_wares'],
                ], function ($router) {
                    require app_path('Http/Routes/domain_two.php');
                });
            }
    }
    

    创建路由文件后。它应该可以工作......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-14
      • 2020-01-08
      • 1970-01-01
      • 2020-05-14
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      相关资源
      最近更新 更多