在多客户端场景中,客户端入口点是子域,我想知道我是否可以将我的客户端分成基本上包含应用程序(如缓存、配置、日志、内核)的目录,然后符号链接回“核心" 其余部分的 Symfony 目录(供应商、src 和 web)。这让我在我的捆绑包方面保持应用程序的统一,但为每个客户端提供了单独的配置。然后我将我的子域指向它们各自的目录。
从表面上看,它似乎很有希望,而且比我一直在考虑的其他一些方法更简单。以后如果我想将客户端升级到版本 2 或添加组件,我可以切换捆绑包,甚至将符号链接指向一个全新的源。它也可能很好地扩展。我还想知道使用这种方法是否允许我在客户端之间维护单独的安全上下文,而不是检查子域并重定向以在用户手动切换子域时进行身份验证。
缺点是多个配置文件的重复,并且更多地涉及初始客户端设置(但老实说,在我看来没什么坏处)。
Symfony2 是否足够灵活来处理这样的重新安排?
在多客户端应用程序中分离缓存是否有速度或安全性等好处?
在每个配置中使用单独的防火墙会导致每个子域的安全上下文不同吗?
背景/附加信息:
我正在将应用程序重新开发为多客户端/租户。我在重新设计中使用 Symfony2,因为原来的版本位于 Doctrine 之上,我现在需要更强大的框架功能。我想维护一个应用程序(所有客户端都相同)并为每个客户端拥有单独的数据库。实际上,我的期望是最多 100-200 个客户(如果我超过了,我会庆祝然后担心它)。数据库之间的架构是相同的,为了便于备份/恢复和稍后的单独升级路径,我将其分开。
我花时间阅读了许多关于多租户的问题和答案。还有关于使用路由和内核侦听器来使用子域来收集客户端 ID,然后动态选择数据库连接等。我最终从 Orm-designer.com 找到了一篇博客文章,概述了他们将网站移至一个新的 VPS。他们在帖子中详细介绍了他们的目录结构,这让我开始思考如何调整这个概念以适应我的目的。