본 글에서는 AWS EC2 인스턴스 서버에 SpringBoot를 배포하는 과정에 대해서 정리하고자 한다(gradle 프로젝트 기준).
먼저, EC2 인스턴스 서버에 git
과 java
가 설치되어 있어야 한다.
두 가지 모두 설치가 되어있다면, 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 서버가 잘 동작하는 것을 확인할 수 있을 것이다.
nohup java -jar -Dspring.profiles.active=local *.jar파일명 &
nohup java -jar *.jar파일명 --spring.profiles.active=local &