[SpringBoot] 프로젝트 AWS EC2로 배포하기(2)
서버를 구동시키기 위해선 jar 파일이 필요하다.
1. jar 파일 만들기
터미널에서 아래와 같이 입력한다.
./gradlew build
build/libs 경로로 이동하여 프로젝트명-버전-SNAPSHOT.jar 파일이 생성된 것을 확인 할 수 있다.
plain이 붙지 않은 jar파일이 서버 구동시에 사용되는 파일이다.
jar파일을 생성한 뒤 git에 커밋해둔다.(추후 ec2서버에서 클론해서 사용하기 위함)
2. EC2 서버에서 스프링부트 서버 실행하기
2-1. git clone하기
ubuntu 서버를 사용하였으므로 apt를 사용해서 git을 설치해준다.
sudo apt-get install git
설치가 완료되었다면 git --version 명령어로 설치가 잘 되었는지 확인해준다.
2-2. SSH Key 생성하기
ssh 프로토콜로 github에서 git clone을 하기 위해선 SSH Key를 발급받고, 계정에 연결해야 한다.
cd ~/.ssh
ssh-keygen -t rsa -C example@github.com
example@github.com 대신 자신의 깃허브 계정 메일을 작성해야 한다.
엔터를 여러번 치면 아래와 같이 키가 생성되고 id_rsa.pub 파일이 생성된다.
아래 명령어를 통해 id_rsa.pub 파일을 출력한 후 이 키 값을 복사하여 GitHub에 등록한다.
.jar 파일을 저장해둔 github 레파지토리로 이동하여 git clone을 진행한다.
디렉토리가 생성되면 clone에 성공한 것이다.
2-3. 스프링부트 서버를 실행한다.
우리는 jar파일을 미리 생성해두었기에 build 과정을 수행할 필요가 없지만, 만약 빌드를 하지 않았다면 클론받은 디렉토리에서 gradlew파일을 사용하여 빌드해야 한다.
기본 EC2 서버에는 자바가 설치되어있지 않으므로 자바 먼저 설치해준다.
이때 설치하는 jdk의 버전은 스프링부트 프로젝트의 버전보다 낮으면 안된다.
sudo apt install openjdk-17-jdk
만약 위 명령어를 사용해 자바가 정상적으로 설치되지 않는다면 아래 명령어를 먼저 실행한 다음 install 명령어를 다시 입력한다.
sudo apt update
빌드 파일을 실행하려면 아래 명령어를 입력하면 된다.
projectname과 version에는 각자 생성된 jar파일에 맞춰 적으면 된다.
nohup java -jar projectname-version-SNAPSHOT.jar &
nohub 명령어 뒤에 &를 붙이면 백그라운드에서 프로세스를 실행하라는 의미로 이 방식으로 실행하게 되면 EC2연결을 종료하더라도 프로세스를 계속 실행하게 된다.
하지만 로그가 나오지 않아 정상적으로 서버가 실행되었는지 알 수가 없으므로 cat nohup.out 명령어를 통해 로그를 확인할 수 있다.
만약 실행중인 jar 파일을 끄고 싶다면 jobs 명령을 통해 백그라운드에서 실행중인 프로세스를 확인하고 fg %인덱스 명령어를 통해 백그라운드에서 실행중인 프로세스를 포그라운드로 전환 시킬 수 있다.
포그라운드로 전환한 후, control + c 를 통해 프로세스를 종료시킬 수 있다.
3. 서버 접속해보기
AWS 인스턴스 페이지로 이동한 뒤 퍼블릭 IPv4 DNS 혹은 IP주소 중 아무것이나 복사 한 후, 8080포트를 뒤에 붙여서 크롬에 붙여넣는다.
http://ec2-43-200-8-55.ap-northeast-2.compute.amazonaws.com:8080/
브라우저에서 아래와 같이 Whitelabel Error Page가 출력된다면 성공이다.
(서버에 index페이지가 존재하지 않기 때문에, Whitelabel Error가 출력된다.)
미리 테스트용으로 만들어둔 api를 요청하면 정상적으로 출력되는 모습을 확인 할 수 있다.
이렇게 배포한 서버는 http로만 접속이 가능하며 https 설정을 위해서는 로드밸런서, ACM등을 활용하여 인증서를 적용시켜야 한다.
또한 고정 ip를 사용하고 싶다면 탄력적 ip로 세팅해주어야 한다.
참고한 블로그
SpringBoot 프로젝트 EC2 배포하기
깃헙에 있는 프로젝트를 AWS EC2에 git clone을 통해 내려받아 jar 파일 빌드를 해보겠습니다.(EC2 인스턴스는 우분투로 진행합니다. 또한 따로 배포 시스템을 구축하지 않고 수동으로 배포하는것만
velog.io