Spring Boot AWS EC2 연결 및 사용

fever·2024년 5월 31일
0

Spring Boot AWS RDS 연결 및 사용
지난 글에서 AWS RDS를 세팅하고, 데이터베이스를 연동했다!
이제 EC2로 실제 백서버를 구동시키고 계속 구동될 수 있게 설정해보자.

EC2란?
Amazon Web Services(AWS)에서 제공하는 클라우드 컴퓨팅 서비스로 가상 서버를 제공한다.

📱보안그룹 생성

0. EC2 > 보안그룹 > 보안그룹 생성

1. 보안그룹 이름 및 설명 설정

  • 모두 영어로 써줘야 함

2. 인바운드 규칙 설정 및 생성

  • 서버포트에 맞춰서 인바운드 규칙 추가
  • HTTP 연결은 80번 포트로 들어오는데, 4000으로 포트포워딩

인바운드 규칙 (Inbound Rules)
인바운드 규칙은 외부에서 인스턴스로 들어오는 네트워크 트래픽을 제어합니다. 이 규칙은 특정 IP 주소, IP 범위, 포트 번호, 프로토콜 등을 기반으로 설정됩니다. (밖에서 안으로 들어올 때 설정되는 규칙)

  • 이후 보안그룹 생성 완료

🛠️ AWS EC2 생성 및 설정

0. EC2 인스턴스 > 인스턴스 시작

1. 이름 및 서버 설정

2. 인스턴스 유형 및 키페어 설정

  • 인스턴스 유형은 프리티어 사용 가능한 걸로
  • 키페어는 생성 누른 후, 이름과 유형을 선택하고 다운로드 해서 저장 필수 (추후에 인스턴스 연결할 때 계속 사용됨)

3. 네트워크 설정 (보안그룹 설정)

  • 앞서서 만들어둔 보안그룹 설정 선택

4. 스토리지 구성

  • 프리티어 제공 용량에 맞춰 선택

🛠️ AWS EC2 가상 서버 접속

  • 인스턴스 연결창으로 들어가면, 여러가지 연결 방법이 나오는데 SSH 클라이언트를 이용해서 연결해보자!
  • 키페어가 저장된 위치로 가서 터미널 실행
  • 아래에 적힌대로 터미널에 ssh -i "키페어이름" ubuntu@퍼블릭ip주소 입력
  • 이후 접속하겠냐고 물으면 yes 누르고, 기다리면 서버에 접속된다.

🛠️ 배포파일 빌드 및 EC2 접속

배포란 무엇인가?
쉽게 말하자면 빌드 파일을 서버에 올려서 가동 시키는 것!
위에서 EC2로 가상서버를 연결했으니, 아래에선 빌드하고 EC2 설정을 마저하도록 하자.

0. 스프링부트 빌드

  • 그래들 플러그인 설치 후 bootJar를 누르면 빌드 파일이 생성된다.

  • 빌드파일은 빌드>libs에 저장된다.

1. 가상서버 (EC2)에 JDK 설치

  • 실행 전에 구동을 위해 jdk를 설치하자
  • 스프링부트3를 사용해서 자바 17로 설치한다.
    sudo apt-get install openjdk-17-jdk
  • 설치후 버전을 확인해본다.
    java -version

2. 가상서버 (EC2)에 빌드 파일 전달

https://filezilla-project.org/download.php?type=client

  • FileZilla 다운 후 가상서버를 연동시킨다.

  • 프로토콜은 SFTP

  • 호스트는 인스턴스에 할당된 퍼블릭 ip주소

  • 사용자는 처음에 고른 운영체제로

  • 키파일은 다운받아둔 키페어로

  • 참고로 퍼블릭 ip주소는 인스턴스에서 확인가능하다.

  • 로컬에서 가상서버로 빌드 파일을 전달한다.

  • 우분투 안에 빌드 파일을 모아둘 수 있게 디렉터리 하나 만들고, 거기에 빌드 파일 끌어서 옮긴다.

3. 가상서버 (EC2)에서 빌드

  • 다시 터미널로 돌아가서, 가상서버에 들어가고 만들어둔 디렉터리로 들어가서 jar파일을 실행시킨다.
    java -jar 빌드파일.jar
  • 스프링부트가 구동되면 빌드는 완료!
  • 이후 퍼블릭ip/포트번호 로 접속해보자. (문제 없으면 완료!)
  • 만일 여기서 접속이 안된다면, EC2 인스턴스에서 보안그룹에서 인바운드 규칙을 잘못했거나 빌드 파일이 손상된 것...

4. 가상서버 (EC2) 무중단 배포

  • 위에서 서버는 터미널이 닫히면, 서버가 종료된다. 하지만 개발이라는 게 언제 꺼질지 모르는 인생이니... 이왕이면 편하게 원격 접속이 끊어져도 컴퓨터가 꺼지지 않는 이상 구동될 수 있게 만들자.

  • nohup 사용
    nohup java -jar 빌드파일.jar &로 jar파일을 실행시킨다.

  • 이후 터미널을 종료해도 가상서버는 잘 돌아간다.

  • 물론, 터미널 끌 때는 exit 명령어를 이용해서 셀을 꺼줘야 함!

5. 가상서버 (EC2) 무중단 배포 종료

  • 작동 중인 프로세스 보기
    ps -ef | grep java 로 java가 들어간 프로세스를 확인한다.

  • 이후 -jar로 실행중인 빌드파일을 kill 한다.
    kill -9 프로세스id


아니, 근데...간단히 데이터만 공유 관리하려고 했는데
왜 여기까지 왔을까...?

오늘도 알차게 배웠다! 끝!

profile
선명한 삶을 살기 위하여

0개의 댓글