1.ec2 - 인스턴스 시작하기
2.ec2 - 원하는 인스턴스 선택(나는 아마존 linux2)
-> 다음
4. 인스턴스 세부정보 구성 -> 서브넷 마지막 문자가 a나 c로 끝나는 걸로 선택해주자.
-> 보안그룹까지 쭉쭉 넘어감
5.보안그룹 설정
우선은 http 접속만 허용할 것이고, 어디서든 접속 할 수 있도록 소스를 0.0.0.0/0, ::/0
로 해준다.
6.인스턴스 검토 및 시작
-> 키페어 설정해줌. 만약에 키페어를 새로 생성한다면 새로운 키페어 선택하고, 다운로드 받은 뒤 ~/.ssh디렉토리에 넣어준다.
조금 기다리면 인스턴스가 생성된다. 생성된 인스턴스에 접속해본다.
생성된 인스턴스에 클릭해서 들어간다.
=> 연결
연결에 필요한 정보들이 있다. 우선 먼저 chmod 400 jaehyeonServerTutorial.pem
를 통해 권한을 부여한다. 위 명령어를 복사하고(물론 개인마다 다르다.) 터미널의 .ssh디렉토리에 접속한 후 위 명령어를 실행해준다.
limjaehyeon@imjaehyeon-ui-MacBookPro .ssh % chmod 400 jaehyeonServerTutorial.pem
그리고 ssh -i 개인.pem ec2-user@인스턴스의 퍼블릭ip4주소
이런식으로 입력해서 인스턴스에 접속해준다. 인스턴스의 퍼블릭 ip4주소는 여기 나와있다.
터미널로 인스턴스에 접속했으면 먼저 깃을 깔아준다. 깃을 안깔고 scp로 프로젝트 파일을 옮겨도 된다. 나는 깃을 깔아주겠다. 아마존 Linux2는 Centos기반이므로 yum install로 깃을 깔아준다. (관리자 권한이 필요하면 앞에 sudo를 붙여준다.) 그리고 프로젝트를 클론해준다.
그리고 나는 node.js어플리케이션 서버이므로 node.js를 설치해준다. nvm은 굳이 설치안해줘도 되지만 혹시모를 버젼관리를 위해 nvm으로 설치해줬다. 참조 : [CentOS 7] node, npm, nvm 설치하기
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
명령어를 먼저 입력해준 후,
source .bashrc
명령어를 입력해준다. 그후, nvm을 입력했을 때 nvm에 대한 설명을 입력해주면 된다. 그리고 원하는 node version을 nvm을 통해 install해준다. nvm install 원하는 버전
그리고 클론받은 프로젝트로 들어가 npm install
해주고 npm start로 실행시켜준다. 나는 3001번 포트를 사용하는 서버를 만들어 실행시켜줬다.
그리고 이제 브라우저에서 http요청을 통해 서버에 접속해볼건데, 내 서버는 3001번 포트를 사용하고 있지만, 아직 3001번 포트를 보안설정에서 열어주지 않았다. 먼저 포트를 열어준다.
클릭해서 보안그룹으로 접속 -> 인바운드 규칙 편집 -> 3001번 포트 추가
그리고 퍼블릭 아이피 : 포트
를 브라우저에 입력해서 접속해본다. 물론 이때 서버에서 Get요청으로 /를 받는 엔드포인트가 있어야 한다.
접속이 성공했다.
EC2 접속은 성공한 것을 확인했고, 이제 로드밸런서를 연결해줄 차례다.
1.EC2 의 옆 사이드바에 보면 로드밸런서가 있다.
여러가지 로드밸런서가 있지만 나는 ALB(Aplication Load Balancer)를 선택해줬다.
4.보안그룹구성
새보안그룹구성으로 해주고, 일단은 http요청만 허용하게끔 해줬다.
굉장히 중요한 부분이다. 맨날 여기서 헤맸었다.
6.대상등록
연결할 ec2인스턴스를 선택하고 등록해준다.
7.등록 -> 프로비저닝 상태로 된다. 끝나는데 까지 몇분걸린다.
8.프로비저닝이 끝나고 활성상태가 되면 이제 직접 들어가서 확인해보자.
로드밸런서 옆의 체크박스를 클릭하면 밑에 박스가 하나 나오는데, 거기서 DNS이름
을 복사하고 브라우저 주소창에 붙여넣기 해서 들어가보자.
잘 들어가진다.
이제 다음단계로/
1.Route53 -> 호스팅영역 -> 호스팅영역생성
2.레코드 생성
레코드 유형 : A
트래빅 라우팅 대상 : 별칭선택 -> Application/Classic Load Balancer에 대한 별칭 -> 아시아 -> 위에서 만든 로드밸런서 선택
레코드 생성
3.네임서버 등록
레코드의 NS유형 옆에 4개의 네임서버 주소가 있는데, 이걸 도메인을 받은 사이트에 가서 네임서버 등록을 해줘야한다. 나는 가비아를 이용했다.
가비아 도메인관리 -> 네임서버
네임서버4개를 복붙해준다.(마지막에 .붙은거는 떼고 등록해준다.)
이 때 시간이 좀 걸릴 수 있다. 나는 가비아 서버에다가 햇는데, 3시간 정도 걸렸던 것 같다. 답답하지만 조금만 참아보자 ㅠㅠ😤
중간중간에 터미널 -> netstat입력(실행) -> 자기 도메인주소 입력해보는 것도 괜찮다.
도메인이 연결이 안됬으면 아래와 같이 나타난다.
** server can't find http://jaehyeon-server.shop/: NXDOMAIN
> jaehyeon-server.shop
;; Got SERVFAIL reply from 168.126.63.1, trying next server
Server: 168.126.63.2
Address: 168.126.63.2#53
도메인이 연결이 되었으면 다음과 같이 나타난다.
** server can't find jaehyeon-server.shop: SERVFAIL
> jaehyeon-server.shop
;; Got SERVFAIL reply from 168.126.63.1, trying next server
Server: 168.126.63.2
Address: 168.126.63.2#53
원래 도메인이 등록되는데 시간이 좀 걸린다고 한다.
참조
나도 처음에 한 3시간 동안은 계속 위와 같이만 나와서 초조했지만 조금 기다리니 아래와 같이 나오게 되었다. (도메인 네임이 생성되었다.) 그리고 위에서 Route53의 네임서버를 연결해줬으므로, 등록된 도메인에 접속하면 브라우저를 통해 다음과 같이 접속되는 것을 확인할 수 있다.
ACM 접속 -> 인증서 요청 -> 도메인 이름 등록 -> 도메인 이름추가. 다른이름 추가 => 앞에 *.붙이고 도메인 이름 추가(앞에 www등이 올 수 있으므로 )
Route53에서 레코드 생성'을 클릭하여 AWS ACM에서 정해주는 토큰을 DNS 서버에 가서 CNAME 레코드를 등록 → 계속
인증서를 발급받는데는 30분까지 걸릴 수 있다고 한다.
Route53에 가서 C name 레코드가 추가되었는지 확인해 볼 수 있다.
인증서를 발급받았으니 다시 로드밸런서로 가서 이번에는 https설정을 해줄 수 있다.
1. 로드밸런서로 이동 -> 해당 로드밸런서 옆의 체크박스 클릭 ->밑의 박스 -> 리스너 -> 리스너 추가
리스너 추가.
포트 - HTTPS : 443
기본작업 : 전달대상 - 해당 로드밸런서
SSL 인증서 - 위에서 받은 SSL 인증서
보안그룹 편집
HTTPS로 접속해야 하는데, HTTPS 보안그룹은 아직 설정을 안해줬으므로 HTTPS 보안그룹 설정을 해준다.
해당 로드밸런서 옆의 체크박스 체크 -> 밑에 나오는 박스에서 설명 -> 보안그룹
인바운드 규칙 -> 인바운드 규칙 편집 -> 규칙추가 -> https -> 우선은 위치무관(모든 아이피 허용)으로 설정해줬다.
4.체크
이제 https로도 접속해보자!
잘 접속된다!!!
5.https로만 접속되게 변경(http로 들어오면 https로 리디렉션)
현재는 http로도 서버에 접속이 가능하고, https로도 서버에 접속이 가능한 상태이다.
이걸 http로 접속하면 자동으로 https로 리디렉션 하도록 로드밸런서에서 설정해줄 수 있다.
로드밸런서 -> 해당 로드밸런서 옆의 체크박스 체크 -> 밑의 박스 -> 리스너 -> HTTP:80 선택 -> 편집
원래 기본작업이 '다음으로 전달'로 되어있다. 이걸 삭제 -> 작업추가 -> 리디렉션
업데이트
이제 http로 브라우저에 입력해도 https로 리디렉션되서 접속되는 것을 볼 수 있다!
주님 정말로 감사드립니다, 아버지 사랑합니다. 아버지께서 다 해주셨습니다. 정말로 감사드립니다. 주만이 저의 생명이고 능력이십니다! 주여, 감사드립니다. 사랑합니다!