【问题标题】:Mulitple war deployment on AWS Tomcat 8AWS Tomcat 8 上的多重战争部署
【发布时间】:2017-05-17 15:03:18
【问题描述】:
我是 AWS 新手,我们正在尝试使用 Tomcat 8 在单个 AWS Elastic Beanstalk 实例上部署多个战争文件。我们实际上有多种服务,我们希望确保它们大部分可用。因此,即使其中一个发生变化,代码更改和部署也不会影响其他方式。我们已经尝试压缩多个战争并且它可以工作,但它再次意味着如果任何一项服务发生变化,其他服务将不可用。有没有办法在不将多个战争压缩在一起然后部署的情况下实现这一点?
【问题讨论】:
标签:
amazon-web-services
amazon-elastic-beanstalk
war
tomcat8
【解决方案1】:
如果每个 War 文件引用不同的 Web 应用程序,那么您可以使用源包部署这些 War 文件。
创建一个Source Bundle 并在其中添加每个war 文件。
Exp : MyApplication.zip
->app1.war
->app2.war
->app3.war
->ROOT.war
当 Elastic Beanstalk 看到您部署了这样的文件时,它会以不同于普通捆绑包的方式对待它。它采用名为 ROOT.war 的 WAR 文件并将其部署为根应用程序。其余的 WAR 文件部署在从其文件名派生的目录中。例如,application1.war 将通过 /application1 路径访问。
现在更改 HostManager 提供的提取脚本。在给定文件中找到脚本:
/opt/elasticbeanstalk/srv/hostmanager/lib/elasticbeanstalk/hostmanager/utils/tomcatutil.rb
或者你可以通过给定的命令找到脚本:
grep -i -r ROOT.war /opt/elasticbeanstalk/srv/hostmanager/lib/: