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 并记录到文件

Elastic Beanstalk 上的 SSL

如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?

如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?

无法连接到 Elastic Beanstalk 上的 ActionCable

AWS Elastic Beanstalk 上的 Wordpress