AWS EC2에 SpringBoot 배포하기

콜트·2021년 2월 1일
3

라이징 프로그래머2

목록 보기
17/18

본 글에서는 AWS EC2 인스턴스 서버에 SpringBoot를 배포하는 과정에 대해서 정리하고자 한다(gradle 프로젝트 기준).

./gradlew 권한부여

먼저, EC2 인스턴스 서버에 gitjava가 설치되어 있어야 한다.

두 가지 모두 설치가 되어있다면, git clone을 통해서 SpringBoot 프로젝트를 원하는 디렉토리에 clone 해온다. 그리고 빌드를 진행하기 위해서는 해당 디렉토리에 존재하는 gradlew에 다음과 같은 명령어를 통해 실행권한을 줘야 한다.

sudo chmod 777 ./gradlew

정상적으로 명령어가 동작했다면 아래 사진과 같이 gradlew의 색이 초록색으로 보일 것이다.

빌드

그리고 다음 명령어를 통해 빌드를 진행한다.

sudo ./gradlew build

명령어를 통해 빌드를 진행한 모습

실행

빌드를 완료하고 나면, /build/libs 디렉토리 내부에 *.jar 파일이 생성되어 있을 것이다.

SpringBoot는 톰캣 서버가 내장되어 있으므로, 아래의 명령어를 통해 빌드된 파일(jar)만 실행해주면 서버가 가동된다.

sudo java -jar *.jar파일명

위의 명령어를 이용해서 jar 파일을 실행시키는 모습

이렇게 서버를 가동시키게 되면, 웹 브라우저에서 EC2 인스턴스의 ip주소:포트번호로 접근했을 때 스프링부트 프로젝트 서버에 접근할 수 있다. 여기서 포트번호는 SpringBoot 프로젝트 서버가 실행된 포트번호이다(물론 EC2 인스턴스의 인바운드 규칙에 해당 포트번호가 설정되어 있어야 한다).

백그라운드 실행

하지만 세션이 끊어지게되면 서버의 가동도 끊어지게 된다. 따라서, 우리는 백그라운드에서도 서버가 동작하도록 다음과 같은 명령어를 사용하면 된다.

nohup java -jar *.jar파일명 &

위의 명령어는 putty의 접속이 끊겨도 백그라운드 실행이 되게끔 해주는 명령어이다.
세션을 종료하여도 가동시킨 SpringBoot 서버가 잘 동작하는 것을 확인할 수 있을 것이다.

실행시 커맨드라인 프로필 설정

  • 옵션을 주어서 profile을 적용할 수도 있다.
  • VM 인자 옵션 : nohup java -jar -Dspring.profiles.active=local *.jar파일명 &
  • 프로그램 인자 옵션 : nohup java -jar *.jar파일명 --spring.profiles.active=local &
    • 위 두 방식 모두 local 프로필, 백그라운드로 SpringBoot를 실행한다.

참고자료


profile
개발 블로그이지만 꼭 개발 이야기만 쓰라는 법은 없으니, 그냥 쓰고 싶은 내용이면 뭐든 쓰려고 합니다. 코드는 깃허브에다 작성할 수도 있으니까요.

0개의 댓글