我怎么能有一个Laravel PHP安装多个项目


How can I have one Laravel PHP install with multiple projects?

我注意到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

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

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

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

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

创建路由文件后。