카테고리 없음

[AWS]Spring Boot 서버 EC2에 배포하기

haenni 2025. 2. 15. 23:41

들어가기 앞서 . . .

지난 포스팅에서는 EC2가 뭔지, 왜 쓰는 건지, 그리고 어떻게 기본 세팅을 하는지를 하나하나 따라가면서 정리해봤다.

처음 접하는 사람에게는 생소할 수 있지만, EC2는 결국 ‘AWS에서 내가 쓸 수 있는 리눅스 컴퓨터 한 대를 빌리는 것’이라는 점만 이해하고 넘어가면 꽤 흥미롭다.

 

이번에는 그 EC2에 내가 만든 SpringBoot 서버를 올려볼 차례다.

 


SpringBoot 서버 EC2에 배포하기

EC2 인스턴스를 생성한 뒤, Spring Boot를 실행하기 위한 JDK를 설치해야한다.

필자는 Spring Boot 3.x.x 버전을 사용할거기때문에 JDK는 17버전을 설치할 것이다.

$ sudo apt update && /
sudo apt install openjdk-17-jdk -y

 

sudo apt update

“현재 설치 가능한 소프트웨어들의 최신 정보를 받아오는 작업”

  • apt는 Ubuntu에서 사용하는 패키지 관리자
  • update는 패키지 목록을 최신 상태로 갱신
  • sudo는 관리자 권한으로 실행

&& \

  • &&는 앞 명령이 성공했을 때만 뒤 명령을 실행한다.
  • \ 명령어를 줄바꿈

sudo apt install openjdk-17-jdk -y

JDK 17을 설치하는 명령어

  • y는 설치 시 “Yes/No”를 묻는 질문에 자동으로 “Yes”라고 답하겠다는 뜻

설치가 끝났으면 아래의 명령어를 입력해 잘 설치가 되었는지 확인하자.

java -version

성공적으로 java가 설치되었다!

 

이제 git에 올린 자신의 프로젝트를 ec2를 통해서 clone해오자.

아래의 명령어를 ec2 터미널에서 입력하고 cd를 통해 프로젝트 폴더로 이동하자.

$ git clone https://github.com/haennni/ec2-spring-boot-test.git
$ cd ec2-spring-boot-test

 

현재 위의 git repo를 보면, gitignore에 application.yml 파일을 포함하고있다.

실제 프로젝트를 배포할 때 민감한 값들이 담긴 파일들은 gitignore에 파일을 포함한다. gitignor에 파일을 추가하면 민감한 값이 담겨진 파일들은 git에 올라가지 않는다.

 

그래서 민감한 값을 가진 파일들은 ec2에 직접적으로 옮겨주어야한다.

#application.yml 파일이 있어야 하는 경로로 이동
cd src/main/resources

#application.yml 파일을 직접 생성
vi application.yml

 

 

vi application.yml이라는 명령어를 입력하면 파일을 생성하고 파일 내용을 입력할 수 있는데, 본인 프로젝트에서 필요한 yml 설정 내용을 적어주자

server:
  port: 80

다 작성한 뒤 :wq! 를 입력하면 파일이 저장된다.

 

 

서버를 실행시키자!

# cd .. 명령어를 통해서 다시 프로젝트 경로로 이동
# 예제에서는 ec2-spring-boot-test 경로로 이동
$ cd ..  
# 기존 빌드된 파일을 삭제하고 새롭게 JAR로 빌드
$ ./gradlew clean build
$ cd ~/ec2-spring-boot-test/build/libs

build를 하게되면 libs 폴더에 두 개의 파일이 생성된다.

 

여기서 ‘ec2-spring-boot-sample.jar’ 을 통해서 백그라운드에서 SpringBoot를 실행해보자.

$ sudo java -jar ec2-spring-boot-sample-0.0.1-SNAPSHOT.jar &

 

 

성공적으로 실행된다.

 

아래 PublicIPs: 52.78.236.10로 접속해보면 아래와 같이 페이지가 열리게 된다.

(현재 파일을 작성한 게 아무것도 없어서 오류 페이지가 뜬다.)

하지만 여기서 끝이 아니다! 이렇게 서버를 배포하였으면 도메인을 통해서 연결해주어야한다.

다음 포스팅에서는 도메인을 연결하는 방법을 다뤄보고자한다.

 

 

(추가) 비용 나가지않게 EC2 종료하기

인스턴스를 종료한다. ’이 인스턴스를 종료한 후 연결된 리소스로 인해 비용이 발생할 수도 있습니다.’

라는 문구가 있는데 연결된 리소스란 탄력적 IP를 뜻하므로 탄련적 IP도 삭제해주어야한다.

 

탄력적 IP 주소 릴리스를 해주자.

 

 

탄력적 IP까지 릴리스해주어 비용이 나가지않도록 해주었다!

 

 


 

마무리하며

처음에는 ‘서버에 직접 배포한다’는 말 자체가 왠지 개발 고수들만 하는 일처럼 느껴졌는데, 하나씩 해보니까 “어..? 나도 되네?” 싶었다.

처음 EC2 켜보고, JDK 깔고, git에서 프로젝트 클론해와서, yml 파일 붙이고, 빌드해서 띄우기까지 해보았다.

처음엔 터미널이 막막할 줄 알았는데, 제작년에 배웠던 유닉스 서버 수업이 은근히 도움이 돼서 의외로 익숙하게 할 수 있었던 것 같다.

 

직접 서버에 프로젝트 띄우는 경험을 하니까 확실히 자신감이 붙었다.

이제는 로컬에서만 돌리는 개발자가 아니라, 진짜 배포도 할 줄 아는 개발자 같아서 꽤 뿌듯했다!!