[SpringBoot+AWS+RDS] 서버 무중단 배포하기 -EC2편-

Dev_ch·2022년 11월 4일
0
본 글은 2022.10.07에 작성되었습니다.

https://dev-chw.tistory.com/26

저번 글의 경우 RDS를 생성하였고 이제 SpringBoot에 연결 후 EC2를 사용해 배포해보도록 하자.

참고로 localhost자리에 엔드포인트 값만 넣어주면 바로 연동이 된다. 프로젝트에서 RDS가 연동이 잘 된 것을 확인했다면 바로 EC2에 배포를 시작해보자. RDS를 만드는 것보다 훨씬 간단하기 때문에 차근차근 따라온다면 어려울 게 없다.

1. 준비사항


  • RDS가 연동된 프로젝트
  • 준비된 프로젝트를 GitHub에 Push

2. 진행


위 준비사항이 완료되었다면 AWS EC2 인스턴스를 생성하자, AWS EC2는 가상의 컴퓨터라고 생각을 하면서 진행하면 이해하기 훨씬 도움될 것이다.

AWS -> EC2로 들어가 인스턴스 시작을 눌러주면

위와 같이 인스턴스를 생성하는 페이지로 이동한다. 이름은 자신이 원하는 대로, 우리는 Amazon Linux를 사용한다 -> 프리티어도 지원 가능!

인스턴스 유형은 기본값으로 두고 새 키 페어 생성을 해서 자신이 잘 보관해주자! 매우 중요한 파일이기 때문에 사라지면 곤란하다..

보안 그룹은 저번 편에서 우리가 미리 생성해두었기 때문에 생성해두었던 보안 그룹을 선택하도록 하자. 그 외에는 기본값으로 두고 인스턴스 생성!

인스턴스 상태가 위와 같이 실행 중이면 정상적으로 실행되고 있는 것이다. 이제 우리는 터미널에서 생성한 AWS EC2 인스턴스로 접속해줄 것이다. (약간 컴퓨터에 접속한다고 생각하자)

// 권한을 pem 파일에 부여
$ chmod 600 ***.pem
// ssh 접속하기
$ ssh -i /Users/유저명/Desktop/testserver.pem ec2-user@{할당받은 public IP 주소}

경로의 경우 mac이라면 pem 파일을 option+cmd+c 하면 경로 복사가 되니 참고하도록 하자.

정상적으로 접속했을 시 터미널에 위와 같이 뜰 것이고 처음이기 때문에 가상의 컴퓨터에 git과 java를 설치하도록 하자.

1. git 설치

$ sudo yum install -y git
$ git --version

2. Java 설치 (17버전)

자신이 진행한 프로젝트에 jdk 버전을 맞춰서 설치해주도록 하자

$ wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
$ sudo rpm -ivh jdk-17_linux-x64_bin.rpm
$ sudo alternatives --config java
$ java -version

3. 프로젝트 빌드

완료되었다면 push 해둔 프로젝트를 가져와야 하기 때문에

$ mkdir {아무거나 폴더명}
$ cd {만든 폴더}
$ git clone {git 주소}

새로만든 폴더에 자신의 프로젝트를 clone 해준다.

$ cd {clone한 프로젝트로 이동}
$ sudo chmod 777./gradlew
$./gradlew build

다음 clone한 프로젝트 폴더로 이동하여 빌드 실행 권한을 주고 프로젝트를 빌드 한다.

4. 프로젝트 배포

$ cd build
$ cd libs
$ java -jar 자신의 프로젝트. jar

위와같이 libs 폴더로 이동한 다음 jar 파일을 실행해주면 서버가 가동되기때문에 배포까지 완료된다.

5. 무중단 배포하는법

$ nohup java -jar 자신의 프로젝트.jar &

이 부분에서 nohup으로 실행해주면 프로세스를 죽이지 않는한 컴퓨터를 끄거나 터미널을 닫거나 해도 꺼지지 않는다.
이때 서버를 종료하기 위해서는

$ ps -ef

커맨드를 통하여 프로세스를 조회한 후 백그라운드에서 돌아가고 있는 jar파일의 pid 번호를 확인하고

$ kill -9 {pid번호}

로 종료한다.

3. 도움이 된 블로그


SpringBoot 프로젝트를 EC2에 배포하기

profile
내가 몰입하는 과정을 담은 곳

0개의 댓글