본문 바로가기
Project/SpringBoot

AWS 프로젝트 배포과정

by 꽃요미 2025. 1. 31.

Intro : 이번에 프로젝트를 AWS에서 EC2로 배포를 하였는데, 블로그와 GPT 참조를 해서 배포만 해보았지 정리를 하여서 나중에 배포를 할일이 다시 생길때를 대비해서 다시 정리하기로 했습니다.

 

✅ 사용한 AWS 서비스

 * EC2 : 애플리케이션 서버 운영 (Tomcat 기반)

 * RDS : 데이터베이스 관리 (MySQL/MongoDB)

 * S3 : 정적 파일 저장 (이미지 동영상)

 * 그외 : CloudFlare : HTTPS 적용  및 DNS 관리

 

 프로젝트 배포 단계

1. AWS 계정 생성 후 IAM 사용자 및 권한 설정

https://ap-northeast-2.signin.aws.amazon.com/oauth?client_id=arn%3Aaws%3Asignin%3A%3A%3Aconsole%2Fcanvas&code_challenge=rGo6RVEjdD-PyNj78puX_KpGAgfSrbiyaYsfwxITGXc&code_challenge_method=SHA-256&response_type=code&redirect_uri=https%3A%2F%2Fap-northeast-2.console.aws.amazon.com%2Fconsole%2Fhome%3FhashArgs%3D%2523%26isauthcode%3Dtrue%26region%3Dap-northeast-2%26state%3DhashArgsFromTB_ap-northeast-2_3028892b247703b7

 

Amazon Web Services Sign-In

 

ap-northeast-2.signin.aws.amazon.com

 

2. EC2 인스턴스 생성

인스턴스 시작 클릭

  - Ubuntu / Amazon Linux 선택

Ubuntu 선택 후 AMI는 무료로 사용할 수 있는 프리 티어로 선택

  - 키 페어 (SSH Key) 생성 및 다운로드 (PEM 파일이 있어야지 EC2 인스턴스에 접근이 가능합니다.)

이름을 입력하고 .pem 파일 생성

  - 보안 그룹 설정 (포트 22, 80, 443, 8080 등 허용)

  - 설정을 다 했으면 인스턴스 시작 버튼 클릭

 

3. MAC 터미널로 Ubuntu에 접속

인스턴스를 터미널에 연결하는 방법

ssh -i "quiz.pem" ubuntu@ec2-13-125-102-213.ap-northeast-2.compute.amazonaws.com

- 위와 같은 형식으로 터미널에 입력해주면 인스턴스와 연결된다.

- 아래는 명령어와 관련된 설명이다.

 

1️⃣ ssh (Secure Shell)

원격 서버에 접속하기 위한 명령어입니다.

보안 프로토콜을 사용하여 암호화된 연결을 제공합니다.

 

2️⃣ -i "quiz.pem"

-i 옵션은 SSH 키 파일(Private Key, 개인 키)을 지정하는 옵션입니다.

"quiz.pem"EC2 인스턴스 접속을 위해 생성된 키 페어 파일입니다.

AWS EC2에서 인스턴스를 만들 때, 보안을 위해 키 페어 (Key Pair)를 생성합니다.

quiz.pem 파일은 비밀 키(Private Key) 역할을 합니다.

EC2 인스턴스에는 공개 키(Public Key) 가 등록되어 있어, quiz.pem을 이용해 인증이 가능합니다.

 

3️⃣ ubuntu@ec2-13-125-102-213.ap-northeast-2.compute.amazonaws.com

ubuntu: 원격 서버의 사용자 이름입니다.

EC2에서 Ubuntu 기반 AMI(Amazon Machine Image) 를 사용하면 기본 사용자 계정이 ubuntu입니다.

만약 Amazon Linux라면 ec2-user, RHEL이라면 root 등의 계정을 사용해야 할 수도 있습니다.

ec2-13-125-102-213.ap-northeast-2.compute.amazonaws.com:

AWS EC2 인스턴스의 퍼블릭 도메인 이름 (Public DNS) 입니다.

"ec2-13-125-102-213"IP 주소(13.125.102.213)와 연관된 AWS 도메인을 나타냅니다.

"ap-northeast-2"은 AWS 리전(서울 리전)을 의미합니다.

 

4. RDS 설정 ( DB 연결 )

 

1️⃣ AWS RDS 생성 개요

 

✅ RDS 생성 시 주요 설정

DB 엔진 선택 (MySQL, PostgreSQL, MariaDB, Aurora 등)

DB 인스턴스 크기 선택 (CPU, RAM)

스토리지 크기 및 자동 확장 여부 설정

접속 정보 설정 (아이디, 비밀번호)

VPC 및 보안 그룹 설정 (접속을 허용할 네트워크 범위)

 

2️⃣ AWS RDS 생성하는 방법

 

🔹 1. AWS 콘솔에서 RDS 생성

1. AWS Management Console 접속

AWS 콘솔에 로그인 후 RDS 검색

RDS 서비스로 이동

2. “데이터베이스 생성” 버튼 클릭

3. DB 엔진 선택

MySQL, PostgreSQL, MariaDB, Oracle, SQL Server 중 선택

여기서는 MySQL을 선택

4. 버전 선택

최신 버전 선택 (예: MySQL 8.0.xx)

5. 배포 옵션

표준 생성(Standard Create) 선택 (빠른 생성도 가능하지만, 기본 옵션을 자세히 설정 가능)

 

🔹 2. 인스턴스 크기 및 구성 설정

6. DB 인스턴스 클래스 선택

t3.micro (무료 티어) 또는 원하는 사양 선택

7. 스토리지 크기 설정

기본값 20GB (필요 시 증가 가능)

자동 확장 기능 (Storage Auto Scaling) 설정 가능

 

🔹 3. 인증 정보 설정

8. DB 사용자 이름과 비밀번호 설정

사용자 이름 (예: admin)

비밀번호 설정 (AWS Secrets Manager 활용 가능)

 

🔹 4. 네트워크 및 보안 설정

9. VPC 설정

기본 VPC 사용 또는 새로운 VPC 선택

10. 퍼블릭 액세스 가능 여부

“예(Yes)” 선택 시: 외부 접속 가능 (EC2 또는 로컬에서 접속하려면 필요)

“아니오(No)” 선택 시: 내부 네트워크에서만 사용 가능

11. 보안 그룹 설정

새 보안 그룹 생성 또는 기존 보안 그룹 선택

EC2에서 접속하려면 보안 그룹에서 3306 (MySQL) 포트를 허용해야 함

 

3️⃣ AWS RDS 접속 방법

 

🔹 1. RDS의 엔드포인트(Endpoint) 확인

1. AWS 콘솔 → RDS 대시보드 → 생성한 DB 선택

2. 엔드포인트 복사 (예: database-1.xxx.us-east-1.rds.amazonaws.com)

 

🔹 2. MySQL 클라이언트에서 접속

mysql -h database-1.xxx.us-east-1.rds.amazonaws.com -P 3306 -u admin -p

 

2) MySQL Workbench (GUI)로 접속

Host: database-1.xxx.us-east-1.rds.amazonaws.com

Port: 3306

User: admin

Password: 입력한 비밀번호

 

 

✅ 서버 환경 구성

- 우분투에 접속했으면 프로젝트 언어 버전에 맞게 설치해야한다

 

1. EC2 접속 및 패키지 업데이트

sudo apt update && sudo apt upgrade -y

 

2. Java 및 필수 패키지 설치

sudo apt install openjdk-17-jdk -y
java -version  # Java 설치 확인

 

✅ 애플리케이션 배포

 - InteliJ에서 PlugIn 옵션에서 BIgDataTool을 설치해서 SFTP 파일 기능을 활용

설치해서 .jar 파일을 ubuntu 디렉터리에 이동하자

 - /home/ubuntu/ 디렉터리 안에 프로젝트 관련 디렉터리를 생성 (CLI로 하려면 ./gradlew build 와 같은 명령어 사용)

 - Gradle 기능중에 assemble을 활용해서 .jar 파일을 생성해서 해당 디렉터리에 이동

Gradle 기능중에 clean과 assemble을 이용해서 .jar 파일을 생성
SFTP 디렉터리에서 ubuntu를 찾아 .jar 넣어줘야 한다

 

 - 추가적으로 로컬에서 관리했던 환경변수도 .env 파일을 생성해서 환경변수 관리 (변수명은 단어사이에 _ 입력)

java -jar /home/ubuntu/quiz/quiz.jar
java -E -jar /home/ubuntu/quiz/quiz.jar

 

- 이제 우분투에 접속해서 .jar 디렉토리 경로를 맞춰서 실행

- 만약 환경변수 인식이 안되면

export $(cat .env | xargs)

 

- 만약 -E를 붙여도 안된다면 위 환경변수 이름에 맞춰서 명령어를 실행하면 인식될것이다.

- 이렇게 하면 .env 파일이 인식될 것이다.