정리 목적
이번에 AWS에 배포 테스트를 하며 UI가 변경된 부분도 좀 있었고 이전에는 도메인 구매 후 접근 테스트만 해본 반면 이번에는 여러 환경을 설정하고 처리했기 때문에 이전 정리 내용을 지우고 새로 다시 정리.
처리 환경 정리
Project
- BackEnd - Spring Boot 3
- FrontEnd - React
- 빌드 방식 - 통합빌드
AWS
- EC2 t2.micro
- ubuntu 22.0.4
- Application Load Balancer
- AWS Certificate Manager(ACM)
- Route53
- S3
- RDS(MySQL)
- ElastiCache(Redis)
CI / CD
- Jenkins
- Git Webhook
WebServer
- Nginx
Domain Register
- Gabia
정리 순서
- S3 Bucket 생성 후 Local에서 테스트
- RDS MySQL Database Instance 생성 후 Local Workbench와 연결 테스트 및 프로젝트 연결 테스트
- EC2 Instance 생성 후 설정
- swap 메모리 설정
- JDK 17 설치
- nvm 설치 및 node 21.7.1 설치
- Nginx 설치 및 설정
- Jenkins 설치 및 빌드 Job 설정을 제외한 나머지 처리
- ElasiCache Redis OSS Cache 생성 및 Redis 설치
- Gabia 도메인 구매 후 Route53, ACM 처리
- Load Balancer 대상 그룹 생성 및 ALB 생성 후 대상 그룹 설정
- A레코드 생성 및 도메인 접근 테스트
- git clone을 통해 사전 테스트 이후 Jenkins Job 설정과 Build 테스트
- Git Webhook 연동 및 테스트
Gabia를 통한 도메인 구매
이번 배포 테스트에서 사용할 도메인은 Gabia에서 구매했다.
이전 테스트때는 freenom에서 무료 도메인을 구매해 사용했었는데 안되길래 알아봤더니 막혔다고 했다.
가비아에서 1년으로 끊으면 그래도 저렴하길래 가비아를 통해 구매했다.
가비아에 회원가입을 하고 메인 페이지에서 원하는 도메인을 입력 후 검색할 수 있다.

그럼 구매할 수 있는 도메인들이 나오게 되는데 원하는 도메인을 선택하고 우측에 위치한 신청하기 버튼을 통해 구매할 수 있다.
구매는 화면만 보고 그냥 할 수 있기 때문에 정리는 패스.
한가지 주의사항으로는 가비아에서 도메인 구매 시 기본 기간이 3년으로 설정되어있기 때문에 검색했을 때의 가격과 다를 수 있다.
그렇기 때문에 기간을 1년으로 선택해야 리스트에서 본 가격대로 구매할 수 있다.
아 그리고 500원짜리 고르면 카드 결제 안된다..ㅎ
도메인을 구매하고 나면 페이지 우측 상단에 위치한 My가비아에서 구매한 도메인을 확인할 수 있다.
따로 뭘 설정할만한 것이 없기 때문에 미뤄두고 구매가 정상적으로 처리되었는지만 확인하고 도메인을 배포할 서비스와 연결해주기 위한 준비를 한다.
Route 53 호스팅 영역 생성
AWS에서 Route 53을 검색하고 호스팅 영역으로 이동해 호스팅 영역 생성 버튼을 클릭한다.
생성 페이지에서는 구매한 도메인을 입력하고 태그가 필요하다면 작성 한 뒤 호스팅 영역 버튼을 클릭해 생성해준다.
도메인 이름에는 구매한 도메인을 넣어주면 된다. 예를 들어 test-project.shop 이런 도메인을 검색하고 구매했다면 그대로 작성해주면 됨.

그럼 호스팅 영역이 생성되고 레코드로 NS, SOA 두가지가 있는 것을 확인할 수 있다.
AWS Certificate Manager(ACM) 인증서 요청
AWS에서 ACM이라고 검색하면 Certificate Manager라고 나온다.
페이지로 이동해 왼쪽에 위치한 인증서 요청을 클릭한다.
가장 첫 페이지에서는 퍼블릭 인증서 요청이 선택된 상태일 것이고 다음 버튼을 클릭한다.

도메인 이름 탭에서는 도메인을 작성해주고 이후 이 인증서에 다른 이름 추가 버튼을 눌러 도메인 앞에 *. 를 붙여 하나 추가해준다.
www 이나 앞에 다른 것이 붙게 하고자 하는 경우에 사용된다.
다른 설정들은 건드리지 않고 인증서를 요청한다.

그럼 인증서가 생성되고 상태가 검증 대기중으로 뜰 것이다.
아래 이미지는 이미 생성해둔 인증서를 캡쳐한 것이기 때문에 상태가 성공으로 뜨지만 검증 대기중으로 뜨는 것이 정상이다.
아래 이미지처럼 도메인 탭에서 Route 53에서 레코드 생성 버튼을 클릭한다.

그럼 아래 이미지 같은 페이지가 나오게 되는데 캡쳐할 때는 이미 처리가 된 상태라 없지만 새로 처리하는 경우라면 인증서 요청 시 추가한 도메인의 개수만큼 CNAME 데이터가 존재할 것이다.
그 데이터들을 모두 체크해주고 오른쪽 하단의 레코드 생성 버튼을 눌러주면 Route 53 호스팅 영역에 CNAME이 추가된다.

여기까지 해도 아마 성공으로 바뀌지 않을 것이다.
기다리면 성공으로 바뀐다는 글도 많이 봤는데 한번도 그랬던 적이 없기도 하고 보통 그런 경우 빠르면 30분 길면 다음날 이라는 얘기도 있어서 빠르게 처리할 수 있는 방법으로 해결한다.
모든 도메인과 환경에 대해 이 방법이 먹히는지는 모르겠지만 이렇게 처리하면 5분 내로 성공 상태로 바뀌게 된다.
가비아 페이지로 이동해 상단 메뉴중 서비스 관리 탭의 서비스 관리로 이동한다.

그럼 아래 이미지와 같이 구매한 도메인과 오른쪽에 관리 버튼이 있다.
관리 버튼을 눌러 이동.

그럼 아래와 같은 페이지가 나올 것이다.
이미지는 이미 다 처리해둔 상태이기 때문에 네임서버에 데이터가 들어가있지만 최초 설정의 경우 모든 데이터가 데이터 없음으로 나올 것이다.
네임 서버 옆의 설정 버튼을 눌러 설정 페이지로 이동한다.

네임 서버 설정 페이지에서는 Route 53에 있는 NS 레코드를 가져와 복사해서 붙여넣기 해주면 된다.

아래와 이미지와 같은 페이지에서 추가 버튼을통해 데이터를 추가할 수 있으며 Route 53에 있는 NS 레코드 데이터 4개를 모두 작성해주면 된다.
가비아에서는 도메인 정보 변경 시 마다 소유자 인증을 해야 하기 때문에 소유자 인증 후 적용 버튼을 눌러 수정해준다.

다음으로 도메인에 CNAME을 설정해준다.
마찬가지로 Route 53에 인증서 요청 후 생성된 CNAME값을 복사해서 붙여넣기 할 것이다.
가비아 페이지에서 DNS 정보 탭으로 이동한다.
CNAME 설정을 최초로 하는 도메인이라면 데이터가 없을 것이다.
DNS 관리 버튼을 누르면 'DNS 관리 툴로 이동합니다. 계속 진행하시겠습니까?' 라는 창이 뜨는데 당연히 확인!

첫 페이지에서 설정 버튼을 눌러준다.

레코드 수정 버튼 클릭!
데이터도 당연히 없는게 정상이다.

그럼 아래 이미지와 같은 창이 뜬다.
여기서도 데이터는 당연히 없을 것이고, 추가 버튼을 누르면 두번째 이미지처럼 아래 탭이 추가 된다.
타입을 CNAME으로 선택하고 호스트에는 CNAME의 레코드 이름을, 값/위치에는 레코드 의 값을 넣어준다.
호스트에는 input 창 이후 자신의 도메인이 붙어있는 것을 볼 수 있다.
그리고 CNAME 레코드의 이름에도 동일하게 끝에 도메인이 붙어있는 것을 볼 수 있다.
그렇기 때문에 CNAME 레코드 이름에서 뒤에 위치한 도메인을 제외한 나머지만 복사해 붙여넣기 해주면 된다.
값/위치에 대해서는 레코드의 값을 가져와 붙여넣기 해주되 끝에 붙어있는 . 은 제거해줘야 한다.
그리고 확인 버튼을 누르면 정상적으로 추가가 되는 것을 확인할 수 있다.
그리고 한번 더 레코드 추가를 눌러 타입을 A로 선택하고 호스트에는 www 를, 값 / 위치에는 EC2 인스턴스의 public IP를 적어준다.
모두 입력했다면 저장!


그리고 ACM 페이지로 이동해 조금 기다리면서 새로고침 한번씩 해보면 금방 상태가 발급 됨으로 바뀌는 것을 확인 할 수 있다.
가비아에서는 A 레코드를 설정했지만 Route 53에는 A 레코드가 아직 없는데 상관없다.
어차피 이후에 Route 53에도 A 레코드를 설정할 것이고 그때 다시 설정하지 않기 위해 미리 설정한 것이기 때문에!