[AWS] SpringBoot 프로젝트 EC2 수동 배포하기

@t189216·2024년 4월 15일

🚢 DevOps

목록 보기
4/6

Github에 있는 프로젝트를 AWS EC2에 git clone을 통해 내려받아 jar 파일 빌드를 해보겠습니다.

1. AWS 네트워크 설정

보안 그룹에서 인바운드 규칙을 다음과 같이 설정합니다.

보안 그룹이란?
AWS 에서 제공하는 방화벽으로 인바운드 규칙, 아웃바운드 규칙이 존재합니다.

  • 인바운드 규칙(inbound) : 외부에서 EC2RDS 등의 내부로 접근할때 사용되는 방화벽 규칙
  • 아웃바운드 규칙(outbound) : EC2RDS 등의 내부에서 외부로 접근할때 사용되는 방화벽 규칙

  1. 원격 EC2 인스턴스에 접속할때 사용되는 ssh 관련 방화벽으로 저는 밖에서도 접속할 때가 있으므로 저희 집 고정 ip가 아닌 Anywhere-IPv4 로 설정했습니다. 또한 ssh는 기본 포트 연결로 22번 포트가 사용됩니다.

  2. HTTPS 연결시 사용됩니다.

  3. HTTP 연결시 사용됩니다.

  4. 스프링 부트 기반 서버이기 때문에 사용자 지정으로 8080 포트를 설정해준 뒤 url을 아는 누구나 접속할수있도록 Anywhere-IPv4 로 설정해줍니다.

아웃바인드 규칙은 기본 세팅으로 남겨둡니다.

2. ssh 키로 EC2 콘솔에 접속하기

EC2를 생성할 때 다운받은 ssh 키가 필요합니다.

EC2 콘솔에서 해당 인스턴스의 연결 버튼을 클릭합니다.

먼저, 다운받은 ssh 키가 있는 디렉토리로 접근해 터미널을 켭니다. 가이드대로 명렁어를 입력해 권한을 변경합니다.

chmod 400 sshKey.pem

권한을 바꿔줬다면 가이드대로 ssh 명령어로 EC2 인스턴스에 접속합니다.

ssh -i "aws_240406.pem" ec2-user@ec2-13-124-17-6.ap-northeast-2.compute.amazonaws.com

EC2 콘솔 접속에 성공했습니다.

3. EC2 콘솔에서 git ssh 연동 후 git clone 하기

git 다운로드

먼저, 콘솔에 git을 다운로드합니다.

sudo yum install git

yum 은 Linux 명령어이기 떄문에 만약 ubuntu를 사용한다면 apt 를 사용해야 합니다.

설치를 해줬다면 다음 명령어로 설치가 되었나 확인이 가능합니다.

git --version

Github에서 ssh key 생성 및 저장

이제 Github에서 ssh key를 생성해야 합니다. .ssh 디렉토리에 키페어를 생성해보겠습니다 .

cd ~/.ssh
ssh-keygen -t rsa -C github계정 메일(example@github.com)

id_res.pub 파일이 생성되었습니다.

cat 명령어로 id_res.pub 파일을 출력한 후, 이 내용을 Github ssh에 저장합니다.

cat id_rsa.pub

Github 프로필 ➡️ settings ➡️ SSH and GPG keys 탭으로 이동후 new SSH key 버튼을 클릭

git clone 하기

이제 Github 레포지터리에서 Code ➡️ SSH 탭을 클릭해 주소를 복사합니다.

이 내용을 EC2에 접속한 터미널에 입력합니다.

git clone 복사한 내용

4. 스프링부트 서버 실행

빌드 파일 생성


이제 클론한 디렉토리로 한번 이동해서 빌드를 실행해 보도록 하겠습니다.

클론한 디렉토리에서 gradlew 파일을 실행시켜 jar 빌드파일을 생성해야합니다.

그전에 기본 EC2에는 자바가 설치되어있지 않으므로 자바를 다운로드합니다.

sudo yum install java-17-amazon-corretto

만약 yum repository에 지원하는 자바가 없다면, OS에 맞는 자바를 다운받아야 합니다.
Amazon Corretto 공식 문서

자바를 다운로드한 후, build.gradle 파일에 정의한 내용을 기준으로 빌드합니다.

./gradlew build

빌드가 성공적으로 끝났다면 build/libs 디렉토리가 새롭게 생성됩니다. 해당 디렉토리로 이동해 jar 파일을 확인해보겠습니다.

cd build
cd libs

빌드 파일 실행


생성된 jar 파일을 실행해보겠습니다.

nohup java -jar 생성된 파일 이름.jar &

& 는 벡그라운드에서 실행한다는 의미로 EC2 콘솔 접속을 끊더라도 실행파일을 계속 실행하라는 명령어입니다.

잘 실행되었는지 로그를 확인해보겠습니다. 먼저, nohup.out 파일이 생성됐는지 확인하고

아래 명령어로 nohup.out 파일을 출력하면 로그를 확인할 수 있습니다.

cat nohup.out

브라우저 URL로 접속하기

퍼블릭 IPv4 주소 혹은 퍼블릭 IPv4 DNS 뒤에 :8080 을 붙여서 접속합니다.

잘 작동되는 모습입니다!

profile
Today I Learned

0개의 댓글