[EC2] 03. DNS 설정 및 Server 배포해보기
2024-07-08 오후 03시 04분
2024-07-08 오후 03시 04분
탄력적 IP 설정

✅ 탄력적 IP란
Elastic IP
는 AWS에서 고정 IP를 부르는 명칭입니다.
만약 제가 만든 인스턴스를 재 실행하는 경우 기존의 IP가 변경되어 접속할 수 있는 주소가 바뀌고,
설정을 다시 해야 합니다.
따라서 탄력적 IP를 세팅하여 IP가 항상 고정적으로 유지되게 해야합니다.
✅ 탄력적 IP 설정 하기

EC2
에서 탄력적 IP 설정을 들어갑니다.

별다른 설정을 건드리지 않고 탄력적 IP를 생성합니다.

탄력적 IP 주소 연결
을 누릅니다.

인스턴스를 선택하여, 이전에 저희가 만들어둔 인스턴스를 선택합니다.
이 화면에 보이는 인스턴스명은 저와 다를 수 있습니다.
트래픽 설정 (ROUTE53)
🌐 DNS (Domain Name Service)란
https://gcore.com/learning/dns-servers-what-they-are-and-how-they-work
127.0.0.1
, 등 여러 IP주소를 보신적이 있을겁니다.
저희가 네이버에 접속을 요청하는 행위도 사실 ip주소에 요청을 보내는 것입니다.
다만 이러한 ip주소를 통한 통신은 문제점이 있었습니다. 기계는 쉽게 이해하지만 사용자는 쉽게
이해할 수 없다는 문제가 있었죠. 그런 문제를 해결하기위해 DNS가 탄생하였습니다.
DNS는 기존에 아이피로 보내는 요청을 문자로 된 주소로 바꾸어서 보내도록 사용자에게 편의성을 제공해줍니다.
🌐 DNS 설정하기
AWS
에서 ROUTE53
서비스를 들어갑니다.
도메인이 없을경우 ROUTE53
에서 도메인 등록을 누르셔서 도메인을 구매하시면 됩니다.
저는 가비아에서 구매한 도메인이 있으므로 해당 도메인을 기준으로 설명드리겠습니다.
만약 ROUTE53
에서 구매하셨을경우, 가비아 설정부분만 제외하시면 문제없이 작동합니다.
🌐 Step 1. ROUTE53 호스팅 설정

자신이 소유한 도메인으로 호스팅 영역을 생성합니다.
일반적으로 퍼블릭 호스팅 영역을 사용합니다. 지금은 그렇게만 이해하시면 됩니다.

세부 설정에 들어가면 NS(네임서버)와 SOA(도메인 DNS 정보)가 자동으로 생성됩니다.
기본적인 작업은 끝났습니다.
🌐 Step 2. Certificate Manager 등록
Certificate Manager
는 aws
에서 제공해주는 인증서 관리툴입니다.
여기서 말하는 인증서는 해당 페이지가 https
로 인증되어있고,
안전하게 암호화 되었다고 사용자에게 알려주기 위해 작성합니다.
특정 페이지를 접속해보시면 보안 경고가 뜨시던 경험이 한번 쯤은 있을겁니다.
위험해 보이고 접속하기 싫은 느낌이 들죠.
https
인증을 받지 않을경우 사용자에게 경고를 보여주고
서버로 보낸 요청레코드가 전부 노출되는 문제가 있습니다.
따라서 암호화를 해야합니다.
지금 당장 사용할 것은 아니지만 우선 등록해보겠습니다.
AWS Certificate Manager
에 접속하여 인증서 요청
탭을 접속합니다.

여기서 완전히 정규화된 도메인 이름
은, 서브 도메인을 포함한 정확한 도메인을 의미합니다.
도메인을 구매하셨을 경우 해당 도메인의 서브 도메인으로 전혀 다른 서비스를 운영할 수 있습니다.
저 같은경우 yoyobar.xyz를 구매했으니, wiki.yoyobar.xyz, project1.yoyobar.xyz등 여러개의
서브도메인을 구축할 수 있습니다.
따라서 사용하실 도메인의 정보를 원하시는 형태로 정확히 입력해주시면 되겠습니다.

저는 이미 발급됨 상태이지만, ROUTE53
에서 레코드 생성을 눌러 레코드 정보를 등록해주시면 되겠습니다.
ROUTE 53
의 도메인일 경우 이미 준비는 끝났습니다.
하지만 아직 서버를 배포하지 않았네요, 이제 EC2에서 서버를 배포해봅시다.
🌐 Step 3. (선택)가비아 설정
가비아의 경우 조금 다릅니다.
우선 Step 2
까지의 내용은 같지만, 추가적인 설정이 필요합니다.

네임서버와 인증서의 라우팅 대상정보를 숙지합니다.
가비아의 공식홈페이지로 들어갑니다.

네임서버에서 기존 트래픽관리에 있던 NS
에 해당하는 정보를 옮겨 적습니다.
기존에 작성되어있는 네임서버는 삭제해도 무관합니다.

DNS 관리
에서 기존에 봐둔 추가적인 DNS 정보를 입력합니다.
항목은 당연히 저와 다를 수 있습니다.
추가적인 DNS를 할당할때마다 추가해야하므로, 항상 기억해두세요!
🌐 Step 4. (선택)인스턴스 연동해보기
현재 만들어둔 인스턴스에 일단 도메인을 연동해보고 싶으면 어떻게 해야할까요?
ROUTE 53
에서 해당 도메인이 어디로 이어질지만 설정하면 됩니다.
우선 EC2
에 접속하여 엘라스틱 IP를 가져옵니다.

해당 주소를 숙지하고, 다시 ROUTE 53
으로 돌아갑니다.
ROUTE 53
의 호스팅 영역
에서, 레코드 생성
을 누릅니다.

레코드 이름으로 제가 원하는 서브도메인 주소와 값으로 아이피를 할당합니다.
이제 해당 ip
에 접속하는대신에 도메인으로 접속할 수 있습니다.
가비아로 발급받은 DNS의 경우, ROUTE 53
에 새로 추가된 트래픽도 Step 3
에서 작성한 방식으로 추가합니다.
Server 배포해보기
이제 서버에서 필요한 DNS는 전부 세팅이 끝났습니다.
근데, 당연히 지금 주소를 입력해도 요청이 거부될겁니다.
아직 서버를 가동한적이 없어요!
지금 인스턴스는 ubuntu OS
가 설치만 되어있고 어떠한 환경이나 서버가 설치되어 있지 않습니다.
인스턴스를 실행해보고 node.js
를 설치하고 기본적인 세팅을 해야합니다.
✅ 인스턴스 실행 및 기본 설정
ubuntu
와 명령에 관한 게시글이 아니므로 해당 내용은 따로 자세히 다루진 않겠습니다.
우선 인스턴스를 실행해야하므로 EC2
로 연결합니다.
sudo su
를 입력해서 우선 관리자 권한으로 접속합니다.
$ apt-get update && /
apt-get install -y ca-certificates curl gnupg && /
mkdir -p /etc/apt/keyrings && /
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && /
NODE_MAJOR=20 && /
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list && /
apt-get update && /
apt-get install nodejs -y
위 코드를 복사해서 설치합니다. 설치가 완료되면 node -v
를 입력해서
정상적으로 node.js
가 설치되었는지 확인합니다.
$ git clone https://github.com/JSCODE-EDU/ec2-express-sample
$ cd ec2-express-sample
$ npm i
설치가 정상적으로 완료되었다면 위의 코드를 입력하여 완성된 서버를 업로드 합니다.
서버는 직접 올리셔도 되고, 해당 레포지토리는 아주 간단한 서버입니다.
서버 파일을 잠깐 확인해볼까요?
https://github.com/JSCODE-EDU/ec2-express-sample/blob/main/app.js
express
의 대한 기본적인 지식은 있으시겠지만,
아주 간단한 구조의 서버파일입니다.
하지만 .env
의 환경변수가 필요하네요, 환경변수를 작성해야 합니다.
vi .env
를 터미널에 입력해서 환경변수를 작성합니다.
DATABASE_NAME=my_database
vim
의 작성방법은 따로 다루지 않겠습니다. 작성을 완료 하셨다면 ls -all
를 입력해서
잘 저장되었는지 확인해봅니다. 이제 파일설치는 완료하였습니다.
✅ 서버 접속해보기
이제 서버를 작성하였으니 서버를 가동해야 합니다. 저희는 pm2를 활용해서 간단하게 구동 해보겠습니다.
npm i pm2 -g
를 입력하여 전역으로 pm
패키지를 설치합니다.
pm start app.js
를 입력해서 서버를 가동합니다.
pm status
를 입력해서 서버의 상태를 확인합니다.
pm stop app.js
를 입력해서 서버를 중지합니다.
서버를 가동하고 기존에 설정한 DNS로 실제로 접속해봅시다!

잘 접속됩니다.
하지만 아직은 http
가 적용되어있지않아 경고가 발생하는데요, 다음 챕터에서
https
적용을 위한 ELB(Elastic Load Balancer)
를 설정해보겠습니다.
댓글은 포스팅에 도움이됩니다. 적극적인 의견 감사드립니다.