Node.js, EC2 배포하기

Kyoungchan Cho·2022년 12월 27일
post-thumbnail

intro

node.js를 EC2로 직접 배포하면서 진행상황을 기록해보고자 한다.

AWS 인스턴스 생성 후 ssh로 EC2 인스턴스 접속하기

1. AWS EC2 인스턴스를 생성해준다.

  • ubuntu 20.04 버젼 Free Tier로 생성한다.
    18.04의 경우 npm 빌드 할때 /usr/bin/npm 관련 에러가 발생했었다.

  • vpc는 생성하지 않았기에 기본으로 설정했으며 subnet은 같은 지역에 있는 것으로 선택했다.
    키 페어를 생성해서 pem파일을 다운받거나 기존의 키 페어를 사용해서 인스턴스를 생성한다.
    그리고 네트워크 설정 > 퍼블릭 IP 자동 할당을 활성화 한다.

2. EC2 인스턴스에 접속

  • 인스턴스에 접속하기 위해 pem파일을 저장한 디렉토리에서 터미널을 켠다.

  • 웹상에서 AWS EC2의 인스턴스를 선택하고 상단의 연결을 누르면 ssh로 연결할때 퍼블릭 dns주소를 확인할 수 있는데, 그 퍼블릭 IP로 아래 커맨드로 인스턴스에 접속해준다.
    ex) ssh -i "키파일명.pem" ubuntu@ec2-11-111-11-111.ap-northeast-2.compute.amazonaws.com

  • 처음 접속시 키 권한 관련 에러가 발생하기 떄문에 리눅스 기반의 경우 아래 커맨드로 권한을 축소해준다.
    chmod 400 "키파일명.pem"

EC2 인스턴스에 node.js를 배포할 수 있는 환경을 만들고 배포하기

1. 인스턴스 내 ubnutu의 패키지를 최신화하고 node.js와 npm을 설치해준다.

  • sudo apt update
  • sudo apt install nodejs
  • sudo apt install npm

2. 기존 프로젝트의 Git clone을 위해 Git을 설치해주고 사용자 설정을 한다.

  • sudo apt install git
  • git config --global user.name 내 아이디
  • git config --global user.email 이메일
  • 원하는 디렉토리에 git clone https://repo.url Git Clone한다.

3. 클론한 프로젝트를 npm build한다.

  • sudo npm i

  • 에러가 발생할 시
    npm 캐시 정리 후 아래 명령어로 npm을 업데이트를 하고 서버 재접속 후에 다시 빌드한다.
    npm cache clean --force
    sudo npm i -g npm

4. 프로젝트를 구동해보자

  • script에 작성해둔 npm start 혹은 node app.js로 빌드한 앱을 구동한다.

  • 근데 nodejs 버전이 낮아서 import 구문 에러가 발생한다.

  • 당황하지 않고 node.js를 업데이트 해준다.
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
    . ~/.nvm/nvm.sh
    nvm install --lts
    잘 설치가 됐고 구동하는지 확인해본다.
    node -e "console.log('Running Node.js ' + process.version)"

  • 마지막으로 npm cache를 초기화 해준 후에 패키지들을 설치해준다.
    npm cache clean --force
    sudo npm i

  • script에 작성해둔 npm start 혹은 node app.js로 빌드한 앱을 구동한다.




참고)

https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html
https://velog.io/@rheey90/AWS-EC2-Node.js-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC

profile
https://lying-lettuce-69f.notion.site/KyoungchanCho-Blog-f9f150b9e3be4467a67cf2a21932650d (게시글 자동 비공개 현상으로 일단 노션으로 이동합니다. 소개에서 URL 링크 클릭으로 연결됩니다.)

0개의 댓글