Elastic Beanstalk 上的 Tomcat 部署:无法访问该站点
Posted
技术标签:
【中文标题】Elastic Beanstalk 上的 Tomcat 部署:无法访问该站点【英文标题】:Tomcat deployment on Elastic Beanstalk: The site cannot be reached 【发布时间】:2018-05-06 16:13:54 【问题描述】:我正在尝试将 Tomcat Web 应用程序部署到 AWS EB 上的环境中,当我这样做时,一切都很顺利,直到我尝试查看超时并通知无法访问该站点的页面。
在本地主机上部署到 Tomcat 时,一切正常,我使用相同的 war 文件在 AWS 上进行部署。两者都使用Tomcat 8.0,war文件的结构是:
-CarbonCost.war
-WEB-INF
-lib
-classes
-Controller
-Controller.class
-Connect.class
-web.xml
-META-INF
-js
-img
-css
-index.jsp
-page2.jsp
来自 AWS 的 catalina.log 文件:
22-Nov-2017 18:03:49.754 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
22-Nov-2017 18:03:50.045 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
22-Nov-2017 18:03:50.095 INFO [main] org.apache.tomcat.util.net.NioselectorPool.getSharedSelector Using a shared selector for servlet write/read
22-Nov-2017 18:03:50.108 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
22-Nov-2017 18:03:50.119 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
22-Nov-2017 18:03:50.124 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 11657 ms
22-Nov-2017 18:03:50.220 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
22-Nov-2017 18:03:50.220 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.45
22-Nov-2017 18:03:50.260 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /var/lib/tomcat8/webapps/ROOT
22-Nov-2017 18:03:52.321 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
22-Nov-2017 18:03:52.431 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /var/lib/tomcat8/webapps/ROOT has finished in 2,170 ms
22-Nov-2017 18:03:52.443 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
22-Nov-2017 18:03:52.490 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
22-Nov-2017 18:03:52.513 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 2388 ms
我意识到这可能没有足够的信息继续下去,但我完全不知道如何继续,所以任何一般性指导都会很棒。
谢谢
【问题讨论】:
【参考方案1】:我在修修补补时几乎偶然发现了解决方案。我在 EC2 实例所属的安全组中添加了一条规则允许来自任何 IP 地址的入站 HTTP 访问。
如果有人能确认这是正确的配置,那就太好了。
【讨论】:
【参考方案2】:对不起,我会评论你的答案,但我的代表目前还不够高。您的配置看起来正确,这是一个健康的启动日志。最后一行Server startup in x ms
表示服务器成功启动所需的时间。如果你看到这个你很好!
附带说明,如果您要允许来自任何 IP 的访问,最好将安全组中的入站访问限制为某些应用程序端口(即 http 服务器的 80 和 443)。这将防止公共互联网上的人们尝试暴力破解端口 22 上的 SSH 连接和其他漏洞。
【讨论】:
以上是关于Elastic Beanstalk 上的 Tomcat 部署:无法访问该站点的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件
如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?
如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?