📌  相关文章
📜  一个目录中的多个 laravel 站点 - PHP (1)

📅  最后修改于: 2023-12-03 15:35:51.931000             🧑  作者: Mango

一个目录中的多个 Laravel 站点

如果你在一台服务器上面托管了多个 Laravel 站点,那么可能需要将这些站点放在一个统一目录下面。下面我将介绍如何做到这一点。

设置虚拟主机

首先,我们需要设置多个虚拟主机。在这里,我以 Apache 服务器为例。我们可以在 Apache 的配置文件 /etc/httpd/conf/httpd.conf 中设置虚拟主机:

<VirtualHost *:80>
    DocumentRoot "/var/www/site1/public"
    ServerName site1.example.com
    <Directory "/var/www/site1/public">
        AllowOverride All
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/site2/public"
    ServerName site2.example.com
    <Directory "/var/www/site2/public">
        AllowOverride All
    </Directory>
</VirtualHost>

这里设置了两个虚拟主机:site1.example.com 和 site2.example.com,分别对应目录 /var/www/site1/ 和 /var/www/site2/。

设置共享目录

接下来,我们需要在这些站点之间设置一个共享目录,用于共享一些公共资源,比如图片、CSS、JS 等。在这里,我将这个共享目录设置为 /var/www/shared/

要使这个共享目录在多个站点之间共享,需要执行以下操作:

  1. 将共享目录中的内容复制到每个站点的 public 目录中(Laravel 的公共资源都在这个目录下面);
  2. 修改 Laravel 的配置文件 config/app.php,将公共资源路径修改为共享目录:
'public_path' => env('PUBLIC_PATH', base_path('public')),

// 修改为:
'public_path' => env('PUBLIC_PATH', '/var/www/shared/public'),
创建多个站点

现在,我们可以在共享目录下面创建多个站点了。以 site1 为例,假设我们将它放在目录 /var/www/shared/sites/site1/ 下面,那么我们需要进行以下设置:

  1. 创建 /var/www/site1/ 目录,并将 Laravel 的源代码放在这个目录下面;
  2. 创建 public 目录,并将其作为站点的入口,即:如果我们访问 site1.example.com,那么实际上会访问 /var/www/site1/public/index.php
  3. 创建软连接,将共享目录下面的资源链接到这个站点的 public 目录中:
cd /var/www/site1/public/
ln -s ../../../../../shared/sites/site1/public ./shared
  1. 修改 .env 文件,将公共资源路径修改为共享目录下的路径:
PUBLIC_PATH=/var/www/shared
  1. 配置站点的域名解析指向服务器 IP。

至此,我们已经完成了一个站点的设置。

创建更多站点

创建更多站点的过程类似于上述过程,只需要将站点的源代码放在 /var/www/shared/sites/ 目录下面,然后依次创建软连接即可。

总结

通过上述操作,我们可以在一台服务器上面托管多个 Laravel 站点,并且可以共享一些公共资源。这些站点之间互相独立,没有任何冲突,可以完全满足多站点托管的需求。

注意:本文中提到的目录和配置文件路径仅供参考,具体路径需要根据实际情况进行修改。