【发布时间】:2019-06-16 17:00:25
【问题描述】:
this 可能重复,但不接受回答。
我有两个场景
- 我们正在构建一个 CRM,我们将有多个客户使用相同的产品。举个例子,
subdomain1.maindomain1.com和anysubmain.anothermaindomain.com应该指向同一个 webapp 文件夹。并且根据域,我们将动态选择数据库,但代码库将保持不变。 请注意:整个代码库保持不变。 - 我们正在为客户构建一系列网站,其中部分代码库将保持不变,但取决于子域,我们将加载默认的 servlet 文件。举个例子,
manage.domain.comcrm.domain.comequote.domain.com应该指向同一个 webapp 文件夹。根据域,我们将加载默认的 servlet 文件。 请注意:部分代码库对于所有域都将保持不变。前任。核心架构师文件。
其他人提出了哪些解决方案
- Deploy copy of same war file 2 time, Softlink, Create 2 contexts that point to the same file, Use alias。最后一个可能是不错的选择,但不知道如何将其用于不同的子域/域。
- This can be one of the solution but not sure whether it will work on same port or different port
- 互联网上有很多文章展示了我们如何在单个 tomcat 服务器上的多个域上部署多个 web 应用程序,但不是我需要的方式。
注意:我可以为上述 2 个场景创建 2 个 AWS EC2 实例。这意味着我不期待上述 2 个问题的一种解决方案。
【问题讨论】:
-
如果我是你,我会使用反向代理,并运行 2 个 Tomcat 实例(或至少 2 个基于同一 Tomcat 中的同一应用程序的 servlet 上下文)。它更安全,更不容易出错。
-
在多个目录中保留一段代码是没有意义的。背后的原因是,如果我们更新代码,我将不得不在部署时在多个地方更新。
-
我想知道为什么这是个问题。这不是重复的代码。它是工件/二进制文件的副本。出于包括故障转移在内的多种原因,运行应用程序的多个实例(完整堆栈)是一种常见的做法。这就是部署任务自动化的原因。当这是一个我强烈怀疑的问题时,我认为可以启动多个 tomcat 实例并指向同一个文档根目录(尽管我不记得如何设置它)。
-
@ernest_k,我来接你了。我想我需要用不同的方式来表达。虽然你的观点是绝对正确的。我这样做是为了减少开发方面和部署方面的工作量。想象一下,我从核心架构文件中对数据库类进行了微小的更改,我必须将该更改复制到所有站点。这可以手动完成,也可以使用 git 或其他我现在想不到的东西来完成。然而,我的计划是,一次提交,一次推送,一次部署。所以这就是我走这条路的原因。
-
您是否在 Tomcat 前运行 Apache Web 服务器?