1. EC2 세팅하기 - 기본 설정

  1. 이름 및 태그 : 컴퓨터가 어떤 역할을 하는지 알 수 있게 작성
    • instagram-server
  2. Application and OS Images ( Amazon Machine Image)
    • Ubuntu 선택 - 프리 티어 선택가능한 버전으로
      • 선택이유 : 가장 가벼운 OS
  3. Instance 유형 : 컴퓨터 한대의 사양
    • 프리 티어에 해당하는 t2.micro를 사용
  4. 키 페어 (로그인)
    • 빌린 컴퓨터에 접속할 때 사용하는 비밀번호
      • 옵션 선택
        • 유형 : RSA
        • 프라이빗 키 파일 형식 : .pem
      • 설정 후 받은 파일은 접속할 때 필요하므로 꼭 보관

2. EC2 세팅하기 - 보안그룹 설정

  1. 네트워크 설정
    • 편집 → Firewall (security groups)을 설정
      • 외부와 내부에서 발생하는 트랙픽에서 어떤 트래픽을 허용할지 설정하는 것
  2. Inbound traffic ( 외부 → EC2 instance로 접근하는 트래픽)
    • 규칙 1 : ssh - 22번 포트 - 위치무관
      • ssh는 원격 접속을 위한 용도
      • 위치무관이라는 것은 모든 요청을 보내는 ip를 허용한다는 것
    • 규칙 2 : HTTP - 80번 포트 - 위치무관
    • 규칙 3: HTTPS - 433번 포트 - 위치무관
    • 규칙 3: custom TCP - 3000번 포트 - 위치무관

3. EC2 세팅 하기 - 스토리지 구성

  1. 스토리지 구성 - volume
    • EBS (Elastic Block Storage) : EC2 안에 부착되어 있는 일종의 하드디스크
  2. 셋팅
    • 30 GiB - gp3 : 가성비 및 프리 티어에서 제공해 주는 용량 선택
      • 추후에 증가 가능
    1. EC2 접속하기
    • 생성된 인스턴스 정보 해석
      • 퍼블릭 IPv4 주소 ( EC2 인스턴스가 생성되면서 부여받은 IP 주소)
        • EC2 인스턴스에 접근하기 위한 IP 주소
      • 인스턴스 상태 ( 현재 컴퓨터의 상태 설명)
        • 컴퓨터 켜짐 : 실행 중
        • 주의 : 종료 - 해당 EC2 인스턴스를 삭제한다는 의미, 취소 불가능
    • EC2에 접속하기
      • 인스턴스에 연결 - EC2 instance Connect을 사용하여 연결 선택

4. ssh 클라이언트로 EC2 접속하기

ssh -i "생성한-key-pair-파일.pem" ubuntu@ec2-3-36-70-252.ap-northeast-2.compute.amazonaws.com
  • 위 명령어는 생성한 key pair이 있는 곳에서 실행 
  • -i : 'identity file'을 의미
    • 사용자가 서버에 접속할 때 사용할 특정한 개인 키 파일을 지정하는 데 사용
  • 파라메터 : "ddota-key-pair.pem"
  • 접속위치 : ubuntu@ec2-3-36-70-252.ap-northeast-2.compute.amazonaws.com
  • 의미:
    • 원격으로 파라메터에 있는 파일을 이용하여서 접속위치에 접속을 한다.
      • 파마메터: 비밀번호
      • 접속위치: 리눅스 컴퓨터

5. 탄력적 IP 연결하기

  • 탄력적(Elastic) IP : EC2 인스턴스를 잠시 중지시키고 다시 실행시켜도 IP 가 변하지 않도록 하는 기능
    • ip의 부족현상으로 인해 만들어진 시스템
    • 인스턴스를 중지시키면 이전에 할당받은 ip가 삭제되므로 탄력적 ip를 이용하여 고정 ip 주소를 획득
  • 연결방법
    • Elastic IPs 메뉴 선택 
    • 할당받은 ip 주소를 클릭  -> Associate Elastic IP address 클릭 -> 원하는 Instance 선택

6. Express 서버를 EC2에 배포하기

  • node.js 설치 : 만든 앱에서 적용된 node.js 버전에 맞게 설치
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\sudo apt-get install -y nodejs

 

  • Github으로 해당 레포지토리 clone 하기
$ git clone 깃허브-레포지토리-HTTPs주소 
$ cd 복사된-레포지토리-폴더이름
$ npm i

 

         npm i 의미 → package.json 에 있는 라이브러리를 설치!!

  • pm2 설치해서 서버 실행시키기
$ sudo npm i -g pm2 
$ sudo pm2 start app.js

 

7. Nest.js로 만든 애플리케이션 배포하기

  • git hub에서  해당 레포지토리 클론
  • node.js 설치
  • pm2 설치
  • nest.js 설치
$ sudo npm i -g @nestjs/cli
  • ( 레포지토리가 복사된 폴더로 이동)
    • pacakge.json 에 있는 라이브러리 설치
    • 애플리케이션 bulild
$ npm i
$ npm run build

    - Clone 한 폴더에 dist라는 폴더가 생성된다.

 

  •  추가로 필요한 .env.prod 파일을 생성
    • 애플리케이션 작성 시 설정했던 정보를 Production 모드에 맞게 입력.

 

추가 정보

  • 현재 주소 확인 명령어 : curl ifconfig.me
  • pm2 명령어
pm2 list //실행중인 앱 리스트 확인
pm2 logs 0 // id 0 앱에 관련된 로그 확인
pm2 stop 0 // id 0 앱 중지
pm2 delete 0 // id 0 앱 삭제
pm2 kill  //  pm2 를 종료

 

+ Recent posts