39. Node.js 입문주차 - 배포 (항해 15일차)

코이그·2023년 4월 17일

항해99

목록 보기
38/54

AWS 배포 가이드

EC2 인스턴스 생성

인스턴스 | EC2 Management Console
인스턴스 시작 -> 운영체제/인스턴스 타입/키 선택

터미널에서 EC2 인스턴스 접속

ssh -i [다운 받은 키] ubuntu@[인스턴스 요약 탭의 퍼블릭 IPv4 주소]

Node.js, MongoDB 설치

  • Node.js
    curl -sL https://deb.nodesource.com/setup_16.x   | sudo -E bash -
    sudo apt-get install -y nodejs
  • MongoDB
    sudo apt-get install gnupg
    curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \
    sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
     --dearmor
    echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
    sudo apt-get update
    sudo apt-get install -y mongodb-org
    MongoDB 공식 문서 설치 가이드

EC2 인스턴스에서 서버 실행

터미널 -> 프로젝트 폴더 -> npm install -> node app.js

EC2 포트 설정

  • 인스턴스 페이지:
    인스턴스 선택 -> 보안 탭 -> 인바운드 규칙 편집 -> HTTP/Anywhere-IPv4
  • 포트 포워딩 (3000 -> 80):
    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

pm2로 서버 실행

  • pm2 설치
    sudo -s
    npm install -g pm2
  • pm2 실행
    pm2 start app.js
  • pm2 명령어
pm2 restart [idNumber]
pm2 list
pm2 delete [pidNumber]
pm2 log
pm2 logs --lines [number]

TIL

오류

MongoDB 설치 시 오류 발생.

시도

Node.js 입문주차의 7-2, 7-3강 강의 내용을 그대로 따라했다.

접근 방법

인스턴스 생성 시 운영체제를 선택해야 하는데, 이 때 강의에서와는 달리 Ubuntu 18.04 버전이 없고 20.04, 22.04가 있어서 22.04를 선택했는데 이것 때문이 아닐까 하는 생각이 들었다.

원인

MongoDB 공식 문서에 들어가보니 MongoDB 설치 방법이 나와있는데

  1. 패키지 관리 시스템에서 사용하는 공용 키 가져오기
  2. Ubuntu 버전에 맞는 리스트 파일 생성하기
  3. 로컬 패키지 데이터베이스 새로고침하기
  4. MongoDB 패키지 설치하기

강의에서의 우분투 버전과 나의 버전이 다르기 때문에 오류가 발생했던 것이다.

해결 방법

MongoDB 공식 문서의 Ubuntu 버전에 맞는 리스트 버전 생성하는 단계에 우분투 버전마다 입력해야 하는 명령어가 나와있다.
Ubuntu 18.04

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

Ubuntu 20.04

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

Ubuntu 22.04

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

여기서 내 우분투 버전에 맞는 명령어를 실행하면 오류 없이 정상적으로 설치가 된다.

알게 된 점 / 배운 점

알게 된 점:

  1. GnuPG?
    공용 키를 가져오는 과정에서 GnuPG가 설치되어있지 않다면 이 것을 설치하는 과정이 포함되어있다.
    GnuPG는 보안 통신을 위한 도구이다. 주로 키 교환 및 확인, 문서 암호화, 및 암호 해독, 디지털 서명 문서인증 등을 책임진다.

  2. 리스트 파일?
    MongoDB 설치 과정에서 리스트 파일을 생성하라는데.. 이 리스트 파일이 뭐지? 다른 곳에서는 이 과정을 "MongoDB의 APT repository를 /etc/apt/sources.list.d에 추가해라"라고 나와있다.

  • APT(Advanced Packaging Tool)는 리눅스에서 .deb 형식의 패키지들을 관리해주는 툴이다.

    그렇다면 sources.list.d는 무슨 디렉토리인가?

  • 원래 sources.list라는 파일(시스템에 존재하는 모든 레포지토리를 기록하는 파일)이 있는데 새로운 레포지토리를 추가할 때마다 이 파일을 일일이 수정하기보다 .d라는 디렉토리를 하나 만들어 거기에 레포지토리를 추가해주고 sources.list의 레코드들처럼 apt에서 사용이 가능하다.

배운 점:
강의를 그대로 따라하는 것도 좋지만 패키지 설치 시 혹은 명령어 실행 시 오류가 날 때 오류 메세지를 검색해보는 것도 좋지만 사용하려는 패키지/명령어/운영체제 등의 공식 문서를 확인하는 습관을 들이는 것이 필요할 것 같다.

profile
COYG🔴⚪

0개의 댓글