【问题标题】:Can duplicated instances of a Symfony application use the same shared source code?Symfony 应用程序的重复实例可以使用相同的共享源代码吗?
【发布时间】:2018-10-23 09:32:39
【问题描述】:

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

/var/www/appX/ 3 个目录完全重复,但 app/config/parameters.yml 文件(数据库配置)和 var 目录(缓存、日志、会话以及与实例相关的其他文件)。

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

一种解决方案可能是“仅”共享 bin、src、tests、vendor 和 web 目录,使用指向唯一共享目录的符号链接?坏点:应用程序目录仍然重复。

但也许有更正式或更可靠的方法来做到这一点?我问你。

使用 Symfony v3.4、MySQL v5.7、php 7.2、Debian 操作系统。

【问题讨论】:

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

标签: symfony


【解决方案1】:

您可以创建不同的环境。而不是已知的开发或测试,create additional ones 与 app1、app2、app3。然后在您的 .htaccess 文件中检测主机:

SetEnvIf Host ^app1\. APP=app1
SetEnvIf Host ^app2\. APP=app2
SetEnvIf Host ^app3\. APP=app3

在 Rewrite 部分使用你的 APP 变量

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多