inflearn logo
강의

Course

Instructor

AWS Introduction & Practice: Easy to Understand Even for Non-Majors

[Hands-on] 7. Deploying an Express Server to EC2

env 파일을 제대로 작성한 후에도 사이트에 연결할 수 없습니다.

29

kjm5880

1 asked

0

잘 작동하는지 확인하려고 접속했는데도, 계속 사이트에 연결 할 수 없다고 뜨네요...

aws aws-elb aws-rds ec2 s3

Answer 2

0

jscode

안녕하세요 kjm5880님!
질문이 누락돼 빠르게 확인하지 못해서 뒤늦게 답변 남기게 된 점 죄송합니다ㅠㅠ!
아직 해결이 안 되셨다면 아래 링크로 질문 주시면
제가 같이 디버깅 도와드리겠습니다!!

https://open.kakao.com/o/sLAt7ORh

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

kjm5880님, .env 파일을 올바르게 작성했더라도 사이트에 접속되지 않는다면 환경 변수 외에 서버 실행 상태와 AWS 네트워크 설정을 함께 확인해야 합니다.

다음 순서로 확인해 보세요.

  1. EC2 또는 배포 서버에서 애플리케이션이 실행 중인지 확인합니다.
ps -ef | grep java

또는 Spring Boot 실행 로그를 확인합니다.

tail -f app.log

애플리케이션이 종료되었거나 환경 변수 누락으로 실행에 실패했을 수 있습니다.

  1. 서버 내부에서 애플리케이션에 직접 접속해 봅니다.
curl http://localhost:8080

정상적으로 응답한다면 애플리케이션은 실행 중이지만 AWS 외부 접근 설정에 문제가 있을 가능성이 높습니다.

  1. Spring Boot가 localhost에만 바인딩되어 있지 않은지 확인합니다.

application.properties 또는 application.yml에 다음 설정을 추가해 보세요.

server.address=0.0.0.0
server.port=8080

server.address127.0.0.1 또는 localhost로 설정되어 있으면 외부에서 접속할 수 없습니다.

  1. AWS EC2 보안 그룹의 인바운드 규칙을 확인합니다.

테스트 목적이라면 다음과 같이 설정할 수 있습니다.

유형: Custom TCP
포트: 8080
소스: 내 IP 또는 0.0.0.0/0

운영 환경에서는 0.0.0.0/0 대신 필요한 IP만 허용하는 것이 안전합니다.

HTTP 기본 포트로 접속하고 있다면 애플리케이션 포트와 접속 포트가 다를 수 있습니다.

http://EC2_PUBLIC_IP:8080
  1. 서버의 운영체제 방화벽도 확인합니다.

Ubuntu를 사용한다면 다음 명령으로 상태를 확인할 수 있습니다.

sudo ufw status

필요한 경우 다음과 같이 포트를 허용합니다.

sudo ufw allow 8080/tcp
  1. .env 파일이 실제로 애플리케이션에 적용되고 있는지 확인합니다.

Spring Boot는 기본적으로 프로젝트의 .env 파일을 자동으로 읽지 않습니다.

따라서 .env를 사용한다면 별도의 라이브러리나 실행 옵션이 필요하며, 서버 실행 전에 환경 변수를 직접 등록해야 할 수도 있습니다.

export DB_USERNAME=사용자명
export DB_PASSWORD=비밀번호
java -jar app.jar

또는 실행 시 다음처럼 전달할 수 있습니다.

java -jar app.jar \
  --spring.datasource.username=사용자명 \
  --spring.datasource.password=비밀번호
  1. 도메인으로 접속 중이라면 DNS 설정도 확인해야 합니다.

도메인의 A 레코드가 현재 EC2의 퍼블릭 IP를 가리키고 있는지 확인하고, DNS 변경 후 전파 시간이 필요한지도 확인해 주세요.

  1. HTTPS로 접속 중이라면 인증서와 리버스 프록시 설정도 확인해야 합니다.

Nginx를 사용한다면 Nginx가 실행 중인지 확인합니다.

sudo systemctl status nginx

Nginx가 80 또는 443 포트에서 요청을 받고, Spring Boot의 8080 포트로 전달하도록 설정되어 있어야 합니다.

Spring Boot 애플리케이션을 AWS에 배포할 때는 실행 파일 형식, 웹 서버 포트, AWS 네트워크 설정에 따라 확인할 항목이 달라집니다. Spring Boot는 AWS Elastic Beanstalk에서 실행 가능한 JAR 또는 WAR 형태로 배포할 수 있습니다.

참고 자료입니다.

특히 curl http://localhost:8080의 결과와 Spring Boot 실행 로그의 오류 메시지를 확인하면 애플리케이션 문제인지 AWS 보안 그룹 문제인지 빠르게 구분할 수 있습니다.

S3 강의 개선 제안

0

40

2

S3 관련 강의 개선 제안

0

32

2

api.basic-server.com

0

48

2

HTTPS 인증서

0

48

2

HTTPS 인증서 받는 부분 알려주세요

0

60

2

pm2 가 설치가안됩니다

0

125

2

사용하고 계신 WebStorm 관련 질문

0

113

1

포스트맨에서 이미지파일 업로드가 안됩니다.

0

111

2

aws 인스턴스 삭제 관련 질문

0

184

2

aws에서 msyql,nginx,certbot다 설치하기

0

123

2

[실습] 3. S3를 활용해 Express 서버에 이미지 업로드 기능 구현하기

0

130

2

[실습] 4. RDS에 접속하기

0

160

2

49차시 [실습]3.파라미터 그룹 추가하기

0

121

2

명령어 어디에 있나요?

0

116

3

비전공자도 이해할 수 있는 AWS 입문/실전 강의의 PDF에서 ELB 페이지가 안맞습니다.

0

110

2

영상이 안 나옵니다 ㅠㅠ

0

105

2

이번 실습은 무료 플랜에서도 가능한가요?

0

174

2

S3 호스팅? Amplify 호스팅?

0

87

1

RDS 파라미터를 만들었는데 추가구성 데이터 옵션에 토글 버튼에 해당 그룹이 안나옵니다. 어떻게 해야하나요?

0

128

2

RDS 엔트포인트 내부 엔드 포인트로 설정하는 법이 있을까요?

0

100

2

보안그룹질문입니다.

0

118

2

이걸 볼려면 리눅스는 알아야 하는군요..

0

136

1

EC2 컴퓨팅 리소스에 연결 vs 연결 안 함

0

111

1

AWS EC2 서버 보안

0

124

2