【问题标题】:Multiple Laravel apps under one domain一个域下的多个 Laravel 应用
【发布时间】:2019-06-13 01:15:23
【问题描述】:

我刚刚开始使用 Laravel,并且刚刚完成了一些基本的应用程序。我正在尝试制定一个通过我们的组织更广泛地使用 Laravel 的计划。我试图弄清楚如何在不必创建大量 Apache 虚拟主机的情况下安装多个 Laravel。

在我们公司内,我们有许多部门,每个部门都有各种内部和公共表单和/或应用程序。我们的网站结构都由 Linux 服务器上的同一个 Apache 实例提供服务,我们偶尔会使用虚拟主机来分隔一些特定的部分,而不是部门(因为这真的会让人不知所措)。我们在网络服务器上的结构如下所示:

/
/department1/someapp
            /anotherapp
/department2/internalapp
            /anotherform
/department3
...and so on

所以人们基本上可以像这样访问它:www.company.com/department1/someapp 等...我们有大约 30 个不同的部门,其中包含一个包含大约 52,000 个 html 和 php 文件的网站,其中混合了程序 php、javascript 和纯html。

因此,我在多次安装时看到的问题会产生类似于必须访问这样的应用程序:

www.company.com/department1/app1/public
                            app2/public
www.company.com/department2/app1/public etc...

很明显,通过使用 department1.company.com 或 department2.company.com 访问应用程序,虚拟主机会让这看起来更漂亮,但我们不想创建那么多子域。所以我正在寻找一些关于如何做到这一点的更好的想法。

【问题讨论】:

  • 有可能。如果需要,您可以将 public 文件夹重命名为 department1 等。然后,您需要覆盖每个应用程序的所有路径,因为出于安全原因,您希望从 Web 可访问目录中删除大部分应用程序。
  • 恕我直言,您应该采取额外的工作并使用子域。这将是最可靠的方法。一个 DocRoot 上的多个应用程序很快就会变得混乱和无法维护。
  • @jakub_jo 从必须与所有虚拟主机一起创建的所有内部和外部 DNS 记录的角度来看,它也将变得不可维护。应该有一种方法可以做到这一点,而不必创建大量子域。我想我可以在子目录中安装 Laravel 并使用 .htaccess 删除对子目录根目录的访问权限,然后重写以将它们移动到我们拥有应用程序的每个位置的公共文件夹中。
  • 你可以为所有应用使用一个 Laravel 基础吗?只是将行为与路由和“模块”分开?
  • @jakub_jo 这可能可以工作,但我认为我必须在逻辑上将所有部门应用程序分开并将它们放在一个主文件夹下,而不是将它们单独保存部门文件夹,就像现在一样。

标签: php apache laravel


【解决方案1】:

我相信Linux symlinks 可以解决您的任务。它们是一种将前端请求转发到 Linux 服务器文件夹的廉价方法。

您可能希望根据您向部门提供的 Web 服务的需要安装尽可能多的 Laravel(或任何其他软件)实例。

你可以有一个好看的入口点,比如 www.mycompany.com 指的是单个 vhost 条目,指的是你服务器上的 /sites 文件夹。

然后,一旦您在服务器上的 /accounting 文件夹下拥有会计部门 Laravel 网络应用程序(或站点)以访问具有 www.mycompany.com/accounting 地址的站点,您必须在 /sites 中创建 accounting 符号链接文件夹,此符号链接应指向您的 Laravel 应用程序的 /accounting/public 文件夹。

因此,您可以根据需要创建任意数量的应用程序,并通过 /sites 文件夹中的相应符号链接将请求转发给它们。

【讨论】:

    【解决方案2】:

    Laravel 应用的入口点是它的 index.php 文件 (https://github.com/laravel/laravel/blob/master/public/index.php)。所以只要你有一个 .htaccess 文件通过这个前端控制器传递所有请求,你就可以将自动加载和引导路径更改为你想要的内容。

    【讨论】:

      猜你喜欢
      • 2015-08-24
      • 2016-06-19
      • 1970-01-01
      • 2015-08-12
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多