【发布时间】:2018-10-23 09:32:39
【问题描述】:
相同 Symfony 应用程序的 3 个实例,位于同一台服务器上:
- URL > 应用程序本地路径 > 使用的数据库
- https://app1.myapp.com > /var/www/app1 > app1 数据库
- https://app2.myapp.com > /var/www/app2 > app2 数据库
- https://app3.myapp.com > /var/www/app3 > app3 数据库
/var/www/appX/ 3 个目录完全重复,但 app/config/parameters.yml 文件(数据库配置)和 var 目录(缓存、日志、会话以及与实例相关的其他文件)。
目的是使用相同的共享代码源创建多个应用程序实例,以优化安装、维护、php缓存、磁盘空间...
得到这样的东西:
- https://app1.myapp.com > /var/www/app > app1 数据库
- https://app2.myapp.com > /var/www/app > app2 数据库
- https://app3.myapp.com > /var/www/app > app3 数据库
一种解决方案可能是“仅”共享 bin、src、tests、vendor 和 web 目录,使用指向唯一共享目录的符号链接?坏点:应用程序目录仍然重复。
但也许有更正式或更可靠的方法来做到这一点?我问你。
使用 Symfony v3.4、MySQL v5.7、php 7.2、Debian 操作系统。
【问题讨论】:
-
将应用程序 docker 化是一种选择吗?这将是一个很好的用例。
-
不是今天,我对 Docker 不熟悉。我了解它如何简化安装和升级,但不了解如何避免目录重复并从独特的共享 PHP 代码源获得优化。
-
您的图像将包含“固定”和共享代码。移动部件在运行时使用卷安装到容器中。
-
让app根据域加载不同的参数,var/中的东西最有可能一起存在
-
您可以多次运行同一个应用程序,但这样做需要对内核进行一些更改。基本上,您必须确保每个应用程序的配置和服务容器是分开的,例如通过向内核提供一个应用程序名称,该名称用作前缀,或者您可以为每个应用程序创建不同的环境。一般来说,拥有共享代码库的要求/复杂性通常更难处理,然后“浪费”磁盘空间。这就是为什么我避免这样做,但它可以工作。让我望而却步的只是设置的最初努力。
标签: symfony