AWS Elastic Beanstalk Tomcat 适用于 .war 但不适用于 .zip
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk Tomcat 适用于 .war 但不适用于 .zip【英文标题】:AWS Elastic Beanstalk Tomcat works with .war but not .zip 【发布时间】:2017-09-08 15:01:56 【问题描述】:我正在尝试使用弹性 beanstalk 和 tomcat 将应用程序部署到 EC2。为了尝试解决不同的问题,我将上传的文件从 .war 更改为 .zip 以包含 .ebextensions 文件夹。但是,现在我在尝试进入网站时收到以下错误:
我认为我添加的 .config 文件可能有问题,所以我尝试单独压缩 .war 文件,但我得到完全相同的错误,因此排除了这种情况。
【问题讨论】:
日志是怎么说的? @stdunbar 似乎没有向日志中添加任何内容。我查看了最后 100 行,它们都与以前的问题有关。 【参考方案1】:TL/DR:将 2 个 .war 文件放入 .zip 文件中,而不是 1 个。
我知道这篇文章已经发布了将近 18 个月。但我经历了完全相同的症状,所以这似乎是一个分享我发现的好地方。
前提:部署 .war 文件效果很好,完全符合预期。
观察:Elastic Beanstalk 会自动执行此操作:
/usr/share/tomcat/webapps/ROOT/[contents of .war are placed here]
问题:部署包含此 .war 文件以及有效配置文件的 .zip 文件无法正常工作。
观察:Elastic Beanstalk 会自动执行此操作:
/usr/share/tomcat/webapps/ROOT/[my-war.war is placed here]
对我来说,这似乎是一个错误。也许这是预期的行为......但我不明白。将 .war 文件放在 webapps 中是有意义的。将 .war 的 contents 放在 ROOT 中是有意义的。但是直接把.war文件放在那里好像很奇怪。
解决方案:将第二个 .war 文件添加到 .zip 中(即使您不需要第二个应用程序!)。
观察:Elastic Beanstalk 会自动执行此操作:
/usr/share/tomcat/webapps/[my-war.war is placed here]
/usr/share/tomcat/webapps/[my-other-war.war is placed here]
现在my-war.war部署正常,生活不错。
【讨论】:
这绝对是一个错误! docs.aws.amazon.com/elasticbeanstalk/latest/dg/…To run multiple applications on the same web server, you can bundle multiple WAR files into a single source bundle. Each application in a multiple WAR source bundle runs at the root path (ROOT.war runs at myapp.elasticbeanstalk.com/) or at a path directly beneath it (app2.war runs at myapp.elasticbeanstalk.com/app2/), as determined by the name of the WAR. In a single WAR source bundle, the application always runs at the root path.
它明确表示单个 WAR 包在 / 处运行。
哇,这是一个了不起的发现!不要忘记,您的应用必须调用 ROOT.war
才能部署在 /
根路径上。
我同意这是一个错误。感谢您发布您的解决方案!以上是关于AWS Elastic Beanstalk Tomcat 适用于 .war 但不适用于 .zip的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk CLI 安装错误