[AWS] EC2에 스프링부트 띄우는 방법 -2 ( JAR 파일 이용하기)

minji·2022년 8월 12일
1
post-thumbnail

앞선 글 에서 EC2 인스턴스에 탄력적 IP를 부여하는 방법과 ssh로 접속하는 과정까지 살펴봤다.

이제 스프링부트를 해당 서버에 띄우는법을 알아보자

우선, 서버를 가동시킬 수 있는 방법은 크게 두가지가 있는데,

1. JAR 파일을 EC2 서버로 복사해서 실행하기
2. git clone 이용하기

이 중 1번의 방법으로 실행해보려고 한다.

👻 JAR 파일복사를 이용한 서버 띄우는 법

1) JAR 파일 생성하기

JAR(Java Archive, 자바아카이브) 파일이란 자바 클래스 파일 및 관련 리소스들을 하나의 파일로 모아 배포하기 위한 파일 형태이다.

프로젝트가 존재하는 폴더의 위치에서, ./gradlew clean build를 실행하자.빌드가 완료되고 나면, build/libs 폴더 내에 {프로젝트명}-{버전}.jar 파일이 생성된 것을 볼 수 있다.

2) JAR 파일 원격지에 복사하기

이제 이 jar 파일을 앞선 글에서 생성한 EC2 서버에 복사하자.scp 명령어는 파일 또는 디렉토리를 ssh 프로토콜을 이용해 원격지로 보내거나 가져올 때 사용한다.
scp {파일명} {원격지 계정}@{원격지IP}:{파일저장경로}

파일명에 jar 파일명을, {원격지 계정}@{원격지IP} 대신 우리가 지정한 HOST 이름을 써주면 된다.

그럼 위와 같이 해당 파일이 잘 전송되었음을 볼 수 있다.

EC2에 접속해 확인해보자.다음과 같이 잘 복사되었음을 볼 수 있다. 이제 서버를 띄워보자.

3) 스프링부트 서버 띄우기

참고로, 아직 서버에 java가 설치되어있지 않다면 먼저 java 설치를 진행한다.

sudo apt-get update
sudo apt-get install openjdk-11-jdk	# 원하는 버전으로 설치

이제 서버를 띄워보자.

java -jar {jar파일명} ( 만약 서버를 중단시키지 않고 백그라운드로 실행하려면 nohup java -jar {jar파일명} & )
다음과 같이 우리가 로컬에서 띄우는것처럼 서버가 잘 띄워진 것을 볼 수 있다!

기존 프로젝트에 데이터베이스 관련 설정이 되어있다면 현재 서버에 DB를 설치하지 않았기 때문에 오류가 뜰 것이다.
각자 DBMS에 맞는 설정을 추가로 해주자. MySQL인 경우 이 글 참고 !! (우선 아래 보안그룹 설정 먼저!)

4) 보안그룹 설정하기

이 때, 추가적으로 EC2 서버에 해주어야할 작업이 있다.

띄워진 서버의 TomcatWebServer 관련 로그를 보면 8080 포트 로 시작되었음을 볼 수 있다. (따로 포트를 지정했다면 해당 번호로 뜰 것이고 그렇지 않으면 디폴트로 8080이다)

즉, 해당 서버로 오는 요청들은 모두 8080 포트를 통해 보내질 것이며, 따라서 해당 포트를 사용할 수 있도록 설정해주어야 한다.

  • aws -> 인스턴스로 들어가, 해당하는 인스턴스의 ID를 클릭한다.
  • 보안탭 -> 보안그룹을 클릭해준다.
  • 아래쪽의 인바운드 규칙의 "인바운드 규칙 편집" 클릭!
  • 다음과같이 4개의 인바운드 규칙을 설정해준다.
    참고로 인바운드 규칙 이란 외부에서 해당 인스턴스로 들어올 수 있도록 하는 규칙들을 의미한다.
    즉, 해당 규칙에 명시된 유형의 요청들만이 접근할 수 있다. 우리는 8080 포트로 들어오는 요청들을 허용해야하므로 이를 추가해준다. 그리고 SSHhttp, https 도 함께 추가한다.

5) 마무리

이렇게 JAR 파일을 복사해 EC2 서버에서 띄우는 방법을 알아봤다.

하지만 이 경우, 만약 코드에 변경이 생긴다면 그때마다 jar 파일을 복사해 보내고, 재실행해주어야한다는 단점이 있다.
따라서 빈번하게 코드가 수정되고 머지된다면 git clone을 이용해 관리하는 것이 낫다. (제 생각.. 입니다 또 다른 방법이 있으면 말씀해주세요~!)

끝 ~

profile
SW Engineer

0개의 댓글