2024. 6. 12. 11:56ㆍBack-End
AWS EC2와 RDS 인스턴스를 설정하고, GitHub에서 프로젝트를 클론하여 빌드하고 배포하는 방법을 단계별로 안내하고자 한다.
또한, S3를 이용한 빌드 및 배포 방법도 소개할 것이다.
1. AWS EC2 인스턴스 설정
1.1. EC2 인스턴스 생성
- AWS 콘솔에 로그인하고 EC2 대시보드로 이동한다.
- 인스턴스 시작 버튼을 클릭한다.
- **Amazon Machine Image (AMI)**에서 원하는 OS를 선택한다. (예: Amazon Linux 2)
- 인스턴스 유형을 선택한다. (예: t2.micro)
- 인스턴스 세부 정보 구성, 스토리지 추가 및 태그 추가 단계를 기본값으로 둔다.
- 보안 그룹 구성 단계에서, 새로운 보안 그룹을 생성하고 HTTP(80) 및 SSH(22) 포트를 허용한다.
- 검토 및 시작 버튼을 클릭한 후 시작 버튼을 클릭한다.
- 새로운 키 페어를 생성하거나 기존 키 페어를 선택하여 다운로드한다.
1.2. EC2 인스턴스에 접속
터미널이나 CMD를 열고, 인스턴스 생성 시 다운로드한 키 페어를 사용하여 SSH로 접속한다:
chmod 400 your-key-pair.pem
ssh -i "your-key-pair.pem" ec2-user@your-ec2-public-ip
1.3. 시스템 업데이트 및 필수 패키지 설치
EC2 인스턴스에 접속한 후, 시스템을 업데이트하고 필요한 패키지를 설치한다:
yum list installed
sudo yum update
sudo yum install git
git config --global user.name "(git 이름)"
git config --global user.email "(git 이메일)"
sudo yum install -y java-21-amazon-corretto-devel
1.4. AWS CLI 설치 및 aws configure 설정
1.4.1. AWS CLI(AWS Command Line Interface) 설치
ec2는 리눅스 기반이므로 아래의 명령어를 진행하여 설치한다
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
1.4.2.aws configure 설정
aws configure
AWS Access Key ID [None]: 해당 사용자의 accessKey의 Id를 입력
AWS Secret Access Key [None]: 해당 사용자의 Secret access key를 입력
Default region name [None]: ap-northeast-2
Default output format [None]: json
2. AWS RDS 인스턴스 설정
2.1. RDS 인스턴스 생성
- AWS 콘솔에 로그인하고 RDS 대시보드로 이동한다.
- 데이터베이스 생성 버튼을 클릭한다.
- 표준 생성을 선택한다.
- 데이터베이스 엔진으로 MySQL을 선택한다.
- 템플릿을 선택한다. (예: 프리 티어)
다른거 쓰면 과금..... - 데이터베이스 인스턴스 식별자, 마스터 사용자 이름 및 비밀번호를 설정한다.
- DB 인스턴스 크기 및 스토리지 설정을 완료한다.
- 연결 설정에서 기존 VPC를 선택하고, 퍼블릭 액세스를 허용한다.
- 보안 그룹을 설정하여 EC2 인스턴스에서 MySQL 포트(3306)에 접근할 수 있도록 허용한다.
- 데이터베이스 생성 버튼을 클릭하여 RDS 인스턴스를 생성한다.
2.2. RDS 보안 그룹 설정
- EC2 대시보드로 이동하여 보안 그룹을 클릭한다.
- RDS 인스턴스와 연결된 보안 그룹을 선택한다.
- 인바운드 규칙 편집을 클릭하여, 규칙 추가 버튼을 누른다.
- 유형: MySQL/Aurora, 프로토콜: TCP, 포트 범위: 3306, 소스: 내 IP 또는 EC2 인스턴스에서 MySQL 포트(3306)에 접근할 수 있도록 VPC의 IPv4 CIDR을 등록해준다
- 저장 버튼을 클릭하여 변경 사항을 저장한다.
3. 프로젝트 설정 및 배포
3.1. 로컬 컴퓨터에서 S3로 빌드 및 배포
3.1.1. Git 리포지토리 클론 및 빌드
로컬 컴퓨터에서 GitHub 프로젝트를 클론하고 빌드한다
git clone https://github.com/your-username/your-repository.git
cd your-repository
./gradlew build
빌드가 완료되면, build/libs 디렉토리에 JAR 파일이 생성된다.
3.1.2. S3 버킷 생성 및 JAR 파일 업로드
1. S3 버킷 생성:
aws s3 mb s3://your-unique-bucket-name
2. JAR 파일 업로드
aws s3 cp ./build/libs/your-application.jar s3://your-unique-bucket-name
3.1.3. EC2에서 JAR 파일 다운로드 및 실행
EC2 인스턴스에서 S3로부터 JAR 파일을 다운로드하고 실행한다
aws s3 cp s3://your-unique-bucket-name/your-application.jar .
java -jar your-application.jar
3.2. EC2에서 바로 클론 및 빌드
3.2.1. Git 리포지토리 클론 및 빌드
EC2 인스턴스에서 GitHub 프로젝트를 클론하고 빌드한다
git clone https://github.com/your-username/your-repository.git
cd your-repository
./gradlew build
3.2.2. 애플리케이션 실행
빌드가 완료되면, build/libs 디렉토리에 JAR 파일이 생성된다. 이 파일을 실행한다
java -jar build/libs/your-application.jar
4. application.yml 설정
EC2 인스턴스에서 application.yml 파일을 설정하여 RDS에 연결한다
(뒤늦게 작성되어있지만 프로젝트를 클론하고 빌드하기 전에 미리 다 설정을 해놔야 된다!!!)
spring:
datasource:
url: jdbc:mysql://your-rds-endpoint:3306/your-database-name
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
jpa:
hibernate:
ddl-auto: update
show-sql: true
database-platform: org.hibernate.dialect.MySQL5Dialect
your-rds-endpoint, your-database-name, your-rds-username, your-rds-password를 실제 RDS 인스턴스의 정보로 교체한다.
위는 username과, password를 환경변수로 지정하였다.(보안을 위해서 환경변수로 지정하는 것이 바람직함)
환경변수를 로컬이나 ec2 인스턴스에서 사용하기 위해서는 해당하는 이름으로 값을 지정해줘야한다.
//vi 편집기를 통해 zsh파일을 열어준다
vi ~/.zshrc
//맨 아래에
export USERNAME=DB 유저 이름
export PASSWORD=DB 유저 비밀번호
AWS EC2와 RDS를 설정하고, GitHub에서 프로젝트를 클론하여 배포하는 방법을 정리하였음.
ec2에서 바로 클론해서 빌드 하는 방식이랑 로컬에서 클론하고 빌드한 후 s3에 업로드한 후 ec2에서 다운받아서 빌드하고 배포하는 과정 두가지를 나누어 정리했음!!
application.yml은 클론하고 빌드하기 전에 미리 작성해두자!!
* 자바스크립트 파일에 XMLHttpRequest를 열 때 url을 작성해야되는데 인스턴스를 중지시켰다가 다시 실행시키면 공개ip가 변경되므로 꼭 자바스크립트에서도 변경을 해주고 위의 과정을 실행시키자!!
'Back-End' 카테고리의 다른 글
kafka (0) | 2024.08.04 |
---|---|
관계 매핑 전략(@OneToMany, @ManyToOne, @OneToOne, @ManyToMany), 상속 매핑 전략 (SINGLE_TABLE, JOINED, TABLE_PER_CLASS) (0) | 2024.05.30 |
로깅(SLF4J) (0) | 2024.05.30 |
JPA와 ORM (0) | 2024.05.30 |