Symfony应用程序的重复实例能否使用相同的共享源代码?

Symfony应用程序的重复实例能否使用相同的共享源代码?,symfony,Symfony,位于同一服务器上的3个相同的Symfony应用程序实例: URL>应用程序本地路径>使用的数据库 >/var/www/app1>app1数据库 >/var/www/app2>app2数据库 >/var/www/app3>app3数据库 3个目录/var/www/appX/完全重复,但app/config/parameters.yml文件(数据库配置)和var目录(缓存、日志、会话,以及与实例相关的其他文件)完全重复 目的是使用相同的共享代码源创建多个应用程序实例,以优化安装、维护、php缓存

位于同一服务器上的3个相同的Symfony应用程序实例:

  • URL>应用程序本地路径>使用的数据库
  • >/var/www/app1>app1数据库
  • >/var/www/app2>app2数据库
  • >/var/www/app3>app3数据库
3个目录/var/www/appX/完全重复,但app/config/parameters.yml文件(数据库配置)和var目录(缓存、日志、会话,以及与实例相关的其他文件)完全重复

目的是使用相同的共享代码源创建多个应用程序实例,以优化安装、维护、php缓存和磁盘空间…
要得到这样的东西:

  • >/var/www/app>app1数据库
  • >/var/www/app>app2数据库
  • >/var/www/app>app3数据库
解决方案可以是“仅”共享bin、src、tests、vendor和web目录,使用指向唯一共享目录的符号链接?缺点:应用程序目录仍然重复

但也许有一个更正式或更可靠的方法来做到这一点?我要你帮忙


使用Symfony v3.4、MySQL v5.7、PHP7.2、Debian操作系统,您可以创建不同的环境。而不是像dev或test这样已知的,使用app1、app2、app3。然后在.htaccess文件中检测主机:

SetEnvIf Host ^app1\. APP=app1
SetEnvIf Host ^app2\. APP=app2
SetEnvIf Host ^app3\. APP=app3
在“重写”部分,使用应用程序变量

RewriteRule .? %{ENV:BASE}/%{ENV:APP}.php [L]

您可以为每个环境加载不同的参数。

是否可以将应用程序对接?这将是一个很好的用例。不是今天,我不熟悉Docker。我知道它如何简化安装和升级,但不知道如何避免目录重复和从独特的共享PHP代码源获得优化。您的图像将保存“固定”和共享代码。在运行时使用卷将移动部件装入容器。使应用程序根据域加载不同的参数,var/中的内容很可能同时存在。您可以多次运行同一应用程序,但这样做需要对内核进行一些更改。基本上,您必须确保每个应用程序的配置和服务容器是分开的,例如,通过向内核提供应用程序名称(用作前缀),或者您可以为每个应用程序创建不同的环境。一般来说,共享代码库的要求/复杂性通常更难处理,然后“浪费”磁盘空间。这就是为什么我避免这样做,但它可以工作。这只是最初的努力,设置是阻止我。