AWS Elastic Beanstalk - tomcat java spring boot 应用程序的问题

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk - tomcat java spring boot 应用程序的问题【英文标题】:AWS Elastic Beanstalk - Problem with tomcat java spring boot application 【发布时间】:2019-04-20 09:10:27 【问题描述】:

您知道我无法访问托管在 Amazon Elastic Beanstalk 上的应用程序吗?

配置:Tomcat 8.5 和 Java 8 在 64 位 Amazon Linux/3.0.6 上运行 我的应用:Java Spring Boot 应用

在我的本地主机上,一切正常。

我在 application.properties 文件中设置了 server.port = 5000。

当我尝试使用链接获取我的应用登录页面时:

http://testenv-env.eu-west-1.elasticbeanstalk.com/employee/login

我收到了 404 错误:

HTTP 状态 404 – 未找到 输入状态报告

留言/员工/登录

但是当我向链接添加端口时:

http://testenv-env.eu-west-1.elasticbeanstalk.com:5000/employee/login

错误是:无法访问此站点。

我的安全组配置:

/var/log/tomcat8/localhost_access_log.txt

127.0.0.1 - - [17/Nov/2018:10:19:04 +0000] "GET / HTTP/1.1" 404 1074
127.0.0.1 - - [17/Nov/2018:10:21:16 +0000] "GET /employee/login HTTP/1.1" 404 1092
127.0.0.1 - - [17/Nov/2018:10:29:02 +0000] "GET / HTTP/1.1" 404 1074
127.0.0.1 - - [17/Nov/2018:10:29:56 +0000] "GET /employee/login HTTP/1.1" 404 1092

/var/log/httpd/error_log

[Sat Nov 17 10:19:18.529071 2018] [mpm_worker:notice] [pid 3716:tid 140569196038208] AH00295: caught SIGTERM, shutting down
[Sat Nov 17 10:19:22.241929 2018] [ssl:warn] [pid 25414:tid 140137380542528] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Nov 17 10:19:22.243341 2018] [mpm_worker:notice] [pid 25414:tid 140137380542528] AH00292: Apache/2.4.34 (Amazon) OpenSSL/1.0.2k-fips configured -- resuming normal operations
[Sat Nov 17 10:19:22.243372 2018] [core:notice] [pid 25414:tid 140137380542528] AH00094: Command line: '/usr/sbin/httpd'

和我的 pom.xml 依赖项:

<groupId>com.project</groupId>
    <artifactId>iam</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>iam</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
 <groupId>org.apache.tomcat.embed</groupId>
 <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

        <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>jstl</artifactId>
</dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
<dependency>
 <groupId>org.webjars</groupId>
 <artifactId>bootstrap</artifactId>
 <version>4.0.0</version>
</dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

【问题讨论】:

【参考方案1】:

第一步是检查您的网址

http://iam-env.eu-west-1.elasticbeanstalk.com/employee/login

本身看起来不正确。这太笼统了,不可能是对的。我建议您查看 AWS Beanstalk 所有应用程序屏幕。在正确环境右侧显示的框中,您会找到类似这样的 URL

https://test-env.asu2mcXXrr.eu-west-2.elasticbeanstalk.com

【讨论】:

是的,是的。但是在我的应用程序控制器中,我为 login.jsp 视图定义了 /employee/login。 是的,您需要先找到 URI,然后将路径附加到它。我希望你已经尝试过那个......就像...... test-env.asu2mcXXrr.eu-west-2.elasticbeanstalk.com/employee/…【参考方案2】:

@michal9225 你只需要设置路由。 发生的情况是 beanstalk URL 期望您的应用程序在端口 80 上运行,并且在我们的本地系统中开发应用程序时,我们通常会更改端口,因为我们的其他应用程序或服务可能在大多数常见端口上运行。

所以现在你有两个选择:-

1- 设置负载均衡器并将 5000 端口路由到 80,然后通过负载均衡器 URL 访问应用程序

2- 从 Application.property 文件中将端口从 5000 更改为 80 (server.port = 80)

【讨论】:

并配置关于 80 端口的入站规则

以上是关于AWS Elastic Beanstalk - tomcat java spring boot 应用程序的问题的主要内容,如果未能解决你的问题,请参考以下文章

将 Socket.IO 与 HTTPS 和 AWS Elastic Beanstalk 一起使用

我在 AWS Elastic BeanStalk Tomcat 6 服务器上使用啥版本的 J2EE?

Amazon Elastic BeanStalk 错误:无法创建 AWS Elastic Beanstalk 应用程序版本

[AWS] Elastic Beanstalk

AWS Elastic Beanstalk CLI 安装错误

text AWS Elastic Beanstalk