⚙️ 개발/Linux

AWS EC2, RDS 생성부터 배포까지

지구용사 2025. 3. 13. 17:06

이미지 사이즈를 줄이는 망행과 더 자세하게 기록하기 위해 재작성함

 

시작에 앞서 AWS 사이트 좌측상단 나라선택

 

 

EC2 인스턴스 생성

무료로 사용하기 위해 Ubuntu를 사용

 

🔎 AMI(Amazon Machine Image)

EC2 인스턴스의 템플릿으로 애플리케이션이 실행될 운영체제, 소프트웨어, 서버 등을 미리 설정해둔 이미지이다.

 

인스턴스 유형은 t2.micro로 AWS 프리티어로 제공되는 기본 인스턴스로 월 750시간 무료사용 가능이다.

750시간이라서 인스턴스 하나정도는 매일 켜놔도 된다!

 

키 페어를 생성한다. 이때 생성된 키는 EC2 인스턴스에 원격으로 접속할 때 사용된다.

키 페어는 한번 생성하면 다시 다운로드할 수 없기에 보관을 잘 할 것

 

방금 생성한 키 페어를 선택하여 설정한다.

 

네트워크 설정은 다음과 같이 기본값으로 생성한다. 왜냐하면 추후에 수정할 수 있기 때문

 

프리미터은 30GB까지 가능하다고 하니 30으로 설정

 

좌측의 인스턴스 시작!

 

EC2 > 인스턴스 생성 확인할 수 있다.

 


RDS 데이터베이스 생성

 

기본으로 설정된 표준생성으로 시작한다.

 

MySQL를 사용할 것이기에 엔진 선택

 

무료를 사용하기 위해 프리티어 설정한다. 그러면 자동으로 가용성 및 내구성에서 단일로 선택된다.

 

자체관리르 선택하여 암호를 직접 설정한다.

 

micro설정

 

프리티어의 최대 한도는 20GiB이다.

스토리 자동 설정을 눌러 스토리지 자동 조정 활성화를 꼭 꺼줘야한다! 안그러면 과금이 발생할 수도...

 

연결에 있어서 퍼블릭 엑세스 '아니요'를 해야한다. 이것도 과금 발생하기 때문

 

기존에 만들어 둔 보안 그룹이 없기 때문에 새로 생성하여 관리할 예정이다.

 

추가 구성에서 데이터베이스의 이름을 생성할 수 있다.

 

RDS > 데이터베이스 생성 확인

 


보안그룹

 

EC2 좌측 메뉴 > 네트워크 및 보안 > 보안 그룹

EC2 생성할 때 생성된 보안그룹, RDS 생성할 때 생겨난 보안그룹 각 두개가 있다.

 

EC2 생성할 때 생긴 launch-wizard-6를 클릭 > 인바운드 규칙 편집

🔎 인바운드 규칙은 외부에서 내부로 들어오는 네트워크 트래픽이며

아웃바운드는 내부에서 외부로 나가는 네트워크 트래픽이다.

 

기본적으로 설정된 SSH는 터미널에서 SSH를 통해 접근할 때 사용된다.

스프링부터 애플리케이션에서 사용하기 위해서 규칙추가 > 사용자 지정 TCP > 8080포트를 설정했다.

보안을 위해선 사용하는 컴퓨터 IP를 설정하는 것이 좋으나 노트북도 함께 사용할거라 Anywhere-IP로 사용

 

위와 같은 방법으로 이젠 RDS 보안그룹 > 인바운드 규칙 편집

유형 MySQL / 소스 > 아까 설정한 EC2 보안그룹 선택

만약 에러가 발생한다면 해당 규칙을 삭제 후 규칙추가하면 된다.

 


인텔리제이에서 RDS 접속

 

EC2 SSH를 통해 우회적으로 데이터베이스에 접속할 수 있다. 이를 SSH Tunneling이라고 한다.

Ctrl + Shift + A > Data Source and Drivers

 

Host: EC2의 ip주소 예를 들면 123.4.567 등

Username: 우분투 기반이로 ubuntu 작성

Authentication: EC2 생성할 때 만든 키를 사용할 것이다.

Private key file: 저장해둔 키를 불러오면 된다.

Port: 22

 

Test Connection을 클릭하면 무사히 연결된 것을 확인할 수 있다.

 

다시 돌아와 이번엔 General를 작성해야 한다.

Host: RDS의 엔드포인트

Port: 3306

User, Password: RDS 만들 때 작성한 아이디와 비밀번호를 작성한다.

 

이것 또한 Test Connection하면 무사히 연결됨을 확인할 수 있다.

 


Git Bash

 

pem파일과 jar파일을 바탕화면에 잘 갖다놨음

이제 Git Bash를 열어 배포를 할 것이다.

 

🔎 jar 파일을 생성하는 방법은 다음 게시물 참고

https://gnoejnimeel.tistory.com/271

 

자바와 MySQL를 사용하기 때문에 서버에 설치한다.

//바탕화면으로 이동
$ cd ~/Desktop

//파일 존재여부 확인
$ Is

//400권한 부여
$ chmod 400 review-web.pem

//연결
$ ssh -i "review-web.pem" ubuntu@ec2-주소.compute.amazonaws.com

//java파일 존재 확인
$ java -version

//java 설치
$ sudo apt update
$ sudo apt install openjdk-17-jre-headless

//java 설치 확인
$ java -version

//MySQL 설치
$ sudo apt update
$ sudo apt update && sudo apt install mysql-client -y

//MySQL 설치 확인
$ mysql --version

 

다른 Git Bash를 열어 바탕화면에 있는 jar 파일을 EC2 서버로 전송하겠다.

//바탕화면으로 이동
$ cs ~/Desktop

//jar 파일을 해당 서버로 전송을 위해 400 권한 부여
$ chmod 400 review-web.pem

//jar 파일 전송
$ scp -i review-web.pem ~/Desktop/review-collection-0.0.1-SNAPSHOT.jar ubuntu@SHH주소.compute.amazonaws.com:~/

 

기존의 Git Bash로 돌아와 jar파일 존재를 확인한다.

 

들어온 jar파일을 실행

$ sudo java -jar review-collection-0.0.1-SNAPSHOT.jar

 

우리가 흔히 아는 Spring 로그가 찍히면서 실행된다.

 

인터넷 창에 http://퍼블릭 IPv4주소:8080 치면 작업하던 화면이 나오면서 배포 완료!

하지만 Ctrl+C하면 서버가 종료되기에 종료 안 되도록 추가로 작업해본다.

$ sudo nohup java -jar review-collection-0.0.1-SNAPSHOT.jar &

 

제대로 실행됨 확인