我该如何在一个Laravel PHP安装中拥有多个项目?

3
我注意到 Laravel 5.3 平均每个项目占用约41MB的磁盘空间。
是否有一种简洁的方式来配置,使 Laravel 只安装在我的 PHP 服务器上(专门用于 Laravel),然后让多个项目(一些作为单独的域,一些作为子目录)使用相同的 Laravel 实例?
例如,我可以将所有内容放在 /usr/share/laravel 中,但是在 /var/www 中,我可以放置每个域 (/var/www/test1.com、/var/www/test2.com) 和域的子文件夹 (/var/www/test1.com/project2),然后它们都会使用相同的 /usr/share/laravel。

在我看来,这样做并没有真正的好处,而且在某些时候你会自找麻烦,因为你可能会遇到由升级引起的问题,更不用说依赖关系了。除非在你的星球上,1MB 的硬盘空间价值连城,否则你将浪费更多的时间和精力。 - Marcin Orlowski
2个回答

3
您可以使用符号链接,我从未尝试过,但我猜这将涉及为每个应用程序创建单独的目录,然后创建指向共享供应商目录(其中包括Laravel)的符号链接。
这将允许您单独版本控制所有特定于应用程序的文件,但共享依赖项。不过请注意,如果您的composer.json文件列出了不同的版本,可能会遇到问题。

0

上次我尝试这个问题时,我的解决方案有些不同。我认为它是一个好的或者最好的解决方案,但到目前为止它已经运行良好:

  • 首先,所有域名都加载相同的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');
            });
        }
}

创建路由文件后,它应该可以正常工作...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接