一台服务器运行多个 laravel 项目必须物理隔离:各项目独立目录、独立 vendor、独立 .env 和数据库,nginx 虚拟主机 root 指向各自 public/,清缓存等操作须在对应目录执行,避免版本冲突与配置混用。

一台服务器运行多个 Laravel 项目,核心不是“共享代码”,而是“隔离运行”。关键在于避免版本冲突、配置混用和缓存干扰。物理隔离 + 独立环境是唯一可靠方式。
按项目独立部署(推荐)
这是最稳定、最易维护的方式,适用于生产与开发环境:
- 每个项目放在单独目录,例如:
/var/www/site-a/、/var/www/site-b/ - 各自执行
composer create-project laravel/laravel:^10.0或对应版本,不共用 vendor 或 .env - Nginx/Apache 为每个站点配置独立虚拟主机,
root指向各自public/目录 - 数据库建议分库(如
site_a、site_b),迁移和清缓存操作必须在对应项目目录中执行
使用 Homestead 管理多站点
适合本地开发,统一管理多个 Laravel 应用:
- 编辑
Homestead.yaml的sites区块,添加多个映射: - map: site-a.test to: /home/vagrant/code/site-a/public- map: site-b.test to: /home/vagrant/code/site-b/public- 修改本机
hosts文件,添加对应域名解析(如192.168.10.10 site-a.test) - 运行
vagrant reload --provision生效(注意:provision 会重置数据库,请提前备份)
单代码库多站点(进阶场景)
仅适用于功能高度一致、仅需域名或路径区分的轻量需求,需引入扩展包:
-
appstract/laravel-multisite:按子域名或主域名自动加载不同配置、视图、中间件 -
gecche/laravel-multidomain:支持多域名共用一套代码,通过.env或独立环境文件控制行为 - 安装后需发布配置、定义站点列表,并在
config/laravel-multisite.php中明确各站点的域名、数据库连接、缓存驱动等 - 不适用于 Laravel 9 和 10 混合运行——仍需版本统一
快速验证与调试要点
多站点上线后容易因缓存或配置残留出错,务必检查:
- 进入每个项目目录单独运行:
php artisan config:clear && php artisan view:clear && php artisan route:cache - 确认各项目
.env中的APP_URL、DB_DATABASE、CACHE_DRIVER完全独立 - 若使用 Redis 缓存,建议为不同项目设置不同
REDIS_PREFIX或数据库编号(如database: 1,database: 2) - PHP 版本需满足所有项目最低要求(Laravel 10 要求 PHP ≥8.1,Laravel 9 推荐 ≥8.1,建议统一用 8.1+)











