📅  最后修改于: 2023-12-03 15:35:51.931000             🧑  作者: Mango
如果你在一台服务器上面托管了多个 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/
。
要使这个共享目录在多个站点之间共享,需要执行以下操作:
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/
下面,那么我们需要进行以下设置:
/var/www/site1/
目录,并将 Laravel 的源代码放在这个目录下面;public
目录,并将其作为站点的入口,即:如果我们访问 site1.example.com,那么实际上会访问 /var/www/site1/public/index.php
;cd /var/www/site1/public/
ln -s ../../../../../shared/sites/site1/public ./shared
.env
文件,将公共资源路径修改为共享目录下的路径:PUBLIC_PATH=/var/www/shared
至此,我们已经完成了一个站点的设置。
创建更多站点的过程类似于上述过程,只需要将站点的源代码放在 /var/www/shared/sites/
目录下面,然后依次创建软连接即可。
通过上述操作,我们可以在一台服务器上面托管多个 Laravel 站点,并且可以共享一些公共资源。这些站点之间互相独立,没有任何冲突,可以完全满足多站点托管的需求。
注意:本文中提到的目录和配置文件路径仅供参考,具体路径需要根据实际情况进行修改。