Intro : 이번에 프로젝트를 AWS에서 EC2로 배포를 하였는데, 블로그와 GPT 참조를 해서 배포만 해보았지 정리를 하여서 나중에 배포를 할일이 다시 생길때를 대비해서 다시 정리하기로 했습니다.
✅ 사용한 AWS 서비스
* EC2 : 애플리케이션 서버 운영 (Tomcat 기반)
* RDS : 데이터베이스 관리 (MySQL/MongoDB)
* S3 : 정적 파일 저장 (이미지 동영상)
* 그외 : CloudFlare : HTTPS 적용 및 DNS 관리
✅ 프로젝트 배포 단계
1. AWS 계정 생성 후 IAM 사용자 및 권한 설정
2. EC2 인스턴스 생성
- Ubuntu / Amazon Linux 선택
- 키 페어 (SSH Key) 생성 및 다운로드 (PEM 파일이 있어야지 EC2 인스턴스에 접근이 가능합니다.)
- 보안 그룹 설정 (포트 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 파일 기능을 활용
- /home/ubuntu/ 디렉터리 안에 프로젝트 관련 디렉터리를 생성 (CLI로 하려면 ./gradlew build 와 같은 명령어 사용)
- Gradle 기능중에 assemble을 활용해서 .jar 파일을 생성해서 해당 디렉터리에 이동
- 추가적으로 로컬에서 관리했던 환경변수도 .env 파일을 생성해서 환경변수 관리 (변수명은 단어사이에 _ 입력)
java -jar /home/ubuntu/quiz/quiz.jar
java -E -jar /home/ubuntu/quiz/quiz.jar
- 이제 우분투에 접속해서 .jar 디렉토리 경로를 맞춰서 실행
- 만약 환경변수 인식이 안되면
export $(cat .env | xargs)
- 만약 -E를 붙여도 안된다면 위 환경변수 이름에 맞춰서 명령어를 실행하면 인식될것이다.
- 이렇게 하면 .env 파일이 인식될 것이다.
'Project > SpringBoot' 카테고리의 다른 글
NginX를 적용한 로드밸런싱 적용 (0) | 2025.01.31 |
---|---|
깃허브 액션에 대해서 (0) | 2025.01.30 |
인게임 유저 관리 ( 중복 계정, equals()와 hashcode() 오버라이드 ) (0) | 2025.01.05 |
DDL ( Data Definiton Language ) 작업 (0) | 2024.12.21 |