[Nest] 서버 배포하기(1) - AWS EC2 생성 및 설정

박하민·2023년 6월 2일
1

CI/CD

목록 보기
1/2

안녕하세요! JS 관련 개발자 취직을 목표로 하고 있는 취준생 겸 학생입니다.
회고, error report, 공부한 내용 등 다양한 게시글을 작성할 계획이고
첫 게시글로 Nest 프레임워크로 만든 졸업작품 백엔드 서버를 배포해 보려고 합니다!

  • AWS 계정(프리티어)이 필요합니다.
  • Ubuntu 환경에서 배포를 진행합니다.
  • Mac OS 환경에서 진행됩니다.

챕터1 AWS EC2 인스턴스 생성 및 설정

우선 AWS 콘솔에서 EC2 접속해 주고

인스턴스 시작을 클릭해 줍니다.

프로젝트 이름은 자유롭게 작명 하셔도 되지만, 애플리케이션 및 OS 이미지 설정 부분에서는 반드시 Ubuntu를 선택하셔야 합니다!

쭉 내려오면 인스턴스는 프리 티어에서 사용 가능한 t2.micro를 사용하고 키 페어를 생성해 봅시다.

키 페어 이름을 적고 생성을 클릭하면 (키 페어 이름).pem 다운로드 됩니다.

나머지 설정들은 default 값으로 진행하시면 됩니다. ( 네트워크 설정의 보안그룹은 추후에 진행합니다 )

세부적인 인스턴스 설정을 위해 생성된 인스턴스를 클릭해 주고

이제 AWS로부터 아이피를 할당받게 되는데 문제가 발생합니다.

그래서 Elastic IP (탄력적 IP)를 사용합니다

  • 인터넷을 통해 접속할 수 있는 고정적인 공인 IP 주소를 할당받게 해준다.

화면 좌측에 탄력적 IP(Elastic IP)에 접속하고

탄력적 IP 주소 할당 클릭

(흰색 부분은 제 IP라서 가렸습니다)

아까 생성했던 인스턴스를 선택하고 연결을 클릭

다시 인스턴스 화면으로 접속하면 탄력적 IP로 할당받았던 IP가 퍼블릭 IP로 변경되어 있습니다!

이제 배포된 서버에 접속할 클라이언트의 IP와 Port를 설정해 주기 위해 좌측 메뉴 > 네트워크 및 보안 > 보안 그룹

인스턴스를 생성할 때 기본 설정으로 생성했기 때문에 설정을 위해 보안 그룹 ID를 클릭해 줍니다.

보안 그룹 세부 정보가 표시되며 하단에 인바운드 규칙 / 아웃바운드 규칙 보이게 되는데

인바운드, 아웃바운드 규칙??

인바운드

  • 기본적으로 설정한 포트 외 모든 포트를 닫는다.
  • 클라이언트가 서버의 데이터에 접속(생성, 수정, 삭제)하기 위해 해당 클라이언트의 포트를 허용하는 규칙

아웃바운드

  • 기본적으로 모든 포트에게 허용되어 있다.
  • 인바운드 규칙에 허용된 포트가 아웃바운드 규칙에 허용되지 않으면 데이터를 응답받지 못한다.
    ( 들어올 수는 있지만 데이터를 가지고 나갈 수는 없다.. )

내 인스턴스 보안 그룹에 설정된 클라이언트만 포트를 열어 요청이 가능하게 하고 필요에 따라서 설정된 클라이언트만 응답을 받을 수 있도록 하는 것
( 우리 프로젝트를 같이 진행하는 클라이언트가 아닌 외부의 위협으로부터 지키는 느낌 )

다시 달려봅시다! 인바운드 규칙 편집을 클릭하고

규칙 추가를 클릭하고 빨간색 테두리 박스의 3가지를 추가해 줍니다.

  1. 아직 사용하진 않았지만 ssh는 원격 호스트에 접속하기 위해 사용되는 '보안 프로토콜' 추후 터미널에서 사용 할 예정이고 기본적으로 ssh는 22번 포트를 사용합니다.
  2. 8080번 포트를 적은 이유는 제 서버가 8080번 포트에서 실행되기 때문입니다.
  3. 0.0.0.0/0 ==> '모든 IPv4 주소의 접속을 허용'
  4. ::/0 ==> '모든 IPv6 주소의 접속을 허용.'

우리가 생성한 인스턴스에 ssh(22번 포트)를 통해 접속할 예정이므로 ssh로 모든 IP에서 접근할 수 있도록 0.0.0.0/0, ::/0 설정을 해줍니다.
( 사실 내 IP만 연결하기 때문에 본인의 IP를 적는 것이 좋습니다. )


이제 EC2 설정은 끝입니다!
분량이 길어서 다음 게시글로 이어집니다~

profile
https://mintmin.dev/ <~~ 블로그 이전했씁니다

1개의 댓글

comment-user-thumbnail
2023년 12월 7일

좋은 정보 감사합니다!

답글 달기