Развертывание приложения Spring Boot на AWS Elastic Beanstalk - ошибка 502 - PullRequest
0 голосов
/ 08 мая 2019

Я знаю, здесь много таких вопросов и ответов, но ни один из них мне не помог. Я пытаюсь установить мое простое приложение Spring Boot на AWS Elastic Beanstalk. Есть ограничение: он должен использовать .jsp шаблонов, поэтому .war, а не .jar. Если я использую предопределенную среду Tomcat в Elastic Beanstalk, все работает нормально, но моя цель - использовать среду Java.

Когда я устанавливаю свое приложение, его статус становится равным Degraded, и я получаю 502, когда пытаюсь достичь URL.

Локально все отлично работает.

Я изменил порт в application.properties на 5000, но это не помогло. Я нашел рекомендацию использовать правило безопасности для входящих сообщений для TCP Port 5000 "0.0.0.0/32", но это не помогло.

Вот мои pom.xml зависимости:


    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

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

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

        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.6.1</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

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

application.properties:

spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
server.port=5000

Основной класс Java:

@SpringBootApplication
public class DemowebApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemowebApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(DemowebApplication.class, args);
    }

}

Журналы ошибок AWS:

2019/05/07 21:04:45 [error] 7827#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: 91.232.158.8, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "my-endpoint-tst.us-east-2.elasticbeanstalk.com"
2019/05/07 21:04:46 [error] 7827#0: *19 connect() failed (111: Connection refused) while connecting to upstream, client: 91.232.158.8, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:5000/favicon.ico", host: "my-endpoint-tst.us-east-2.elasticbeanstalk.com", referrer: "my-endpoint-tst.us-east-2.elasticbeanstalk.com/"

Я подозреваю, что проблема связана с моей конфигурацией Tomcat, но все мои эксперименты с ней еще не помогли.

1 Ответ

0 голосов
/ 04 июля 2019

У меня была похожая проблема с этим.Я загружал JAR-файл до Elastic Beanstalk, и когда я пытался получить доступ к URL-адресу, я получал ошибку Apache 502 с ухудшенным статусом.Локально, я был настроен на порт 8080, но когда я пытался получить к нему доступ через свой URL, я получал 502. Моя проблема была:

1) Я не экспортировал и не загружал файл .JAR из моей IDEкогда я экспортировал это.Я знаю, что вы сказали, что не можете использовать .JAR, но просто убедитесь, что когда вы экспортируете свой проект, вы также экспортируете все зависимости из Maven вместе с ним.

2) Возможно, это будет большая помощь, чем первая часть этого ответа, но даже когда я помещал свой порт в application.properties, он не тянулся к экземпляру Elastic Beanstalk.То, что я в итоге успешно сделал для решения этой проблемы, - это переход на консоль управления в AWS, переход к моему экземпляру Beanstalk и переход на вкладку конфигурации.

На вкладке конфигурации есть раздел Программное обеспечение и в этом подразделе перейдите в Свойства среды.В разделе Имя свойств среды введите SERVER_PORT, а в разделе значений введите 5000.Нажмите «Применить» и дайте экземпляру перезагрузиться.

...