AWS를 활용하여 배포를 진행해 보자

RumbleBi·2022년 10월 5일
0

Front-end

목록 보기
14/15
post-thumbnail
post-custom-banner

1. 인스턴스 만들기

위의 주황색 인스턴스 시작 버튼 클릭!

이름 및 태그 설정은 원하는 이름을 설정하면 되고, 구별하기 쉽게 뒤에 -instance 를 붙여주었다.

애플리케이션 및 OS 이미지는 원하는 운영체제를 선택하면 된다. 나의 경우에는 가장 최신버전의 우분투 LTS버전을 선택했다.

LTS란?
Long Term Support를 의미한다. 장기간동안 버전을 지원한다는 것을 의미한다. 현재 우분투의 새 버전은 6개월 단위로 데스크탑과 서버가 릴리즈되는데 LTS가 아닌 경우 18개월동안 보안 업데이트의 보장이 이루어진다. LTS인 경우에는 데스크탑 3년, 서버는 5년 동안 보장한다.

간단히 말해 빌릴 컴퓨터의 성능을 선택하는 것이다. 나의 경우에는 t2.small을 선택했다. 무료버전을 사용하는 유저는 프리티어사용가능이 붙은 것만 사용이 가능할 것 같다.

키 페어는 우리가 나중에 설정한 인스턴스에 접속할 때 필요한 key를 설정하는 것이다. 처음 생성시에는 키가 없으므로 생성해주자.


이렇게말입니다.

네트워크 설정은 SSH 트래픽 허용을 위치 무관으로 해두는 편이 편하다. 개인 IP로 사용하게 된다면 다른 IP에서는 접속이 불가능하기 때문에!

스토리지 구성은 원하는 용량을 설정해주자.

이제 인스턴스 시작 버튼을 눌러 인스턴스를 생성해주자!

2. 탄력적 IP 주소 설정(elastic IP)

AWS에서는 인스턴스를 생성하면 기본적으로 접속하는 IP가 주기적으로 변경된다. 이러한 경우 IP가 고정적이지 않다면 프로젝트의 수정에 있어 매번 새로운 IP를 확인하여 접속해야 하므로 탄력적 IP 주소 설정을 통해 IP주소를 고정시키자.

옆의 사이드바에서 네트워크 보안 - 탄력적 IP 에 들어가서 탄력적 IP 주소 할당을 클릭하자

네트워크 경계 그룹은 처음 로그인하고 리전 설정에서 선택한 지역을 기준으로 되어 있으므로 그대로 두면된다. 리전이 서울이 아니라면 EC2 메인 화면에서 1시방향에 리전 변경 탭이 있으니 눌러서 변경해주자.

만들어진 탄력적 IP 주소에 할당된 IPv4주소가 고정된 IP다. Name은 원하는 이름 넣으면 된다.
이제 이 IP주소를 만들었던 인스턴스와 연결시켜주면 된다. 위에이 탄력적 IP 주소 연결을 클릭해주자.

우리는 인스턴스를 생성했으므로 그대로 둔다. 인스턴스 선택에서 자신이 만들었던 인스턴스를 고르고 연결 버튼을 눌러주면 끝!

3. EC2 인스턴스 접속하기

사이드바의 인스턴스 - 인스턴스 를 선택한다. 만들었던 인스턴스를 체크박스에서 클릭하고 위에 연결 버튼을 눌러준다

먼저 key를 생성했던 같은 디렉토리로 터미널을 킨 다음 chmod 400 [당신이 설정한 키 이름.pem] 명령어를 통해 파일 권한을 수정해준다.

자세한건 구글에 검색하면 어떻게 권한이 수정되는지 알 수 있다. 이 설정을 해주지 않으면 .pem 파일의 권한이 너무 많아서 실행할 수 없다는 에러가 발생한다.

해줍시다 네

그 뒤에 예라고 적혀있는 부분을 복사하여 엔터 빵!

접속 성공!

4. docker를 활용하여 배포진행하기

생성한 인스턴스는 빈 깡통이기 때문에 docker를 설치해줘야 한다. docker docs 를 보면 나와있는 방법으로 진행해주자.

아까 접속했던 EC2 인스턴스 터미널에서

$ curl -fsSL https://get.docker.com/ | sudo sh
$ sudo usermod -aG docker $USER
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo reboot

입력해주고 다시 아까와 같은 방법으로 인스턴스 접속!

git clone [ssh git repo]

https 방법이 아닌 ssh 방법으로 깃 클론을 해주자

ssh 공개키가 없으면 만들어줘야 한다 모르겠으면 검색하세요

여기서 개인적으로 .env 설정이나 github에 올라와 있지않은 파일들이 있다면 확실히 챙겨넣어주자.

docker-compose up -d --build

명령어 입력으로 인스턴스가 꺼져도 계속 유지되도록 -d 옵션을 달고 빌드해주자.

빌드가 성공적으로 되었다면 현 상태에서는 탄력적 IP를 주소창에 치게 되면 자신이 만든 프로젝트가 보이게 될 것이다.

하지만 누가 IP주소로 사이트를 접속하는가, 그리고 https 접속설정을 해두지 않은 상태이기 때문에 바꿔줘야한다.

5. 80, 443 port 뚫기

네트워크 및 보안 - 보안 그룹 에 들어가서 위의 보안 그룹 생성 버튼을 눌러주자

보안그룹 이름 설정하고 인바운드 규칙을 HTTP, HTTPS 를 선택하여 접속 port를 뚫어주면된다. 그리고 보안그룹생성 버튼을 눌러주면 끝!

6. 대상그룹설정, ALB 생성

또 하나 해 주어야 하는 것이 http로 접속하는 변태들을 강제로 https 로 접속하도록 redirect 시키는 Application Load Balance 를 설정해줘야한다. LB는 간단하게 문지기 같이 누군가 들어오면 어디로 가도록 지시하는 역할이다. 그러므로 http로 접속했지만 https로 접속하도록 강제하는 것이다.

먼저 ALB 생성 전에 대상그룹을 설정해야 한다.
create target group버튼을 누르자.

건들거 없다. 다음으로 가자.

여기서 자신이 만든 인스턴스를 선택하여 include as pending below 를 클릭하여 그룹을 설정해주면 된다.

create target group 클릭.

이제 다음은 로드밸런서 설정으로 가자.

로드 밸런서 생성 클릭.

맨 왼쪽의 ALB create.

여기서 네트워크 매핑이 중요한 부분이다. 선택된 리전의 Zone 을 설정하는 부분인데 최소 2개를 설정해야한다고 되어있지만 그냥 다 체크하는게 좋다.

왜냐하면

대상 그룹에 들어가서 아까 만들었던 대상 그룹을 클릭하면 매핑된 zone이 설정되는데 만약 2a, 2b 만 클릭했다면 헬스체크도 안될뿐더러 503error 페이지를 뱉게 된다.

네 이거요

세큐리티 그룹도 자신이 만든 인스턴스를 선택하고 리스너 and 라우팅도 아까 대상그룹 만들었던거 넣으면 된다!

이제 create load balancer 클릭하면 됨!

그 후에

로드 밸런싱 - 로드밸런서 에서 http로 진입시 https 로 리다이렉트 되도록 수정하면 된다.

7. Route 53 를 통해 도메인 설정까지

아마존에서 서비스하는 Route 53을 통해 도메인을 구입하여 바로 이용할 수 있다. 아마존 말고도 구글, 국내는 대표적으로 가비아 사이트에서 도메인을 구입하고 위탁을 AWS로 넘겨서 도메인관리를 해주면 된다. 구매는 알아서 하고 도메인을 붙여서 IP접속이 아닌 일반 사이트처럼 www.XXX.com 으로도 들어가지도록 하자.

들어가보면 DNS 관리에 호스팅 영역 생성 버튼을 눌러서 구매한 도메인을 적어주고 생성해주면 호스팅 영역 리스트에 도메인이 뜨게 된다.

도메인 이름을 클릭하게 되면 레코드 리스트가 뜨게 되는데 레코드 생성을 눌러주자.

로드 밸런서는 자신이 생성했던 것을 선택해 주면된다. 트래픽 라우팅 대상은 우리가 만들었던 ALB로 지정하고
리전은 자신의 현재 리전을 골라 선택해준다. 그 후 레코드 생성하면

원하는 사이트이름.도메인 으로 접속이 가능하며 http 로 접속했다 하더라도 https로 리다이렉트되어 접속이 된다!

profile
기억보다는 기록하는 개발자
post-custom-banner

0개의 댓글