Server

AWS EC2로 Node.js 프로젝트 배포하기: 인스턴스 생성부터 백그라운드 실행까지

합주기 2024. 10. 16. 00:24

AWS EC2는 물리적인 서버를 대신 하는 가상화 서버라고 생각하면 됩니다.

시간과 비용이 많이 드는 물리적인 서버 대신 AWS의 힘을 빌려 Node.js 프로젝트를 배포해봅시다!

목차

1. EC2 인스턴스 생성하기
2. EC2 인스턴스에 접속하기
3. EC2 인스턴스에 Node.js 설치하기 (feat. nvm 설치)
4. Node.js 프로젝트 실행하기
5. PM2로 Node.js 애플리케이션 백그라운드 실행하기

1. EC2 인스턴스 생성하기

웹 서버의 이름을 작성합니다.

웹 서버의 근간이 될 운영체제를 선택하는 데, 프리 티어 사용가능한 Ubuntu를 선택했습니다.

키 페어 생성을 누르면 이름.pem 이라는 파일이 하나 다운로드 받아집니다. 이후에 인스턴스를 안전하게 접속하기 위해 꼭 필요하니 잘 보관해둡니다.

네트 워크 설정에서 보완 그룹의 이름을 변경해줍니다. (선택)

보안그룹이란?

서버의 네트워크 접근을 제어하는 방화벽 역할을 합니다. 특정 포트와 IP를 지정하여 어떤 트래픽이 허용되는지 제어합니다.

⭐ 기본 보안 그룹 설정

  • 포트 22 : 이 포트는 SSH 접속을 위한 포트입니다. 개발자가 원격으로 서버에 접속할 때 사용됩니다.
  • IP 0.0.0.0/0 : 이 설정은 모든 IP 주소에서 접근을 허용한다는 의미입니다. (어디에서나 접속 가능)
  • 허용: SSH로 접속하는 모든 개발자 (공개된 IP로 접근 가능)
  • 비허용: 그 외의 사람들 (SSH 외의 접근은 차단됨)

나중에 서비스가 배포되기 전에 보안 그룹에 필요한 포트를 더 허용해줘야겠죠?

최종적으로 인스턴스 생성을 클릭해주면 성공입니다.

2. EC2 인스턴스에 접속하기

저는 이미 VMware와 Ubuntu가 설치되어 있어서, 리눅스 환경에서 EC2 인스턴스에 원격 접속해 보았습니다.

 

폴더 생성 및 키 페어 파일 이동

SSH로 원격 접속합니다.

ssh -i [키페어] ubuntu@AWS의퍼블릭IPv4주소

ex ) ssh -i bookStoreKeyPair.pem ubuntu@3.24.87.119

 

3. EC2 인스턴스에 Node.js 설치하기 (feat. nvm 설치)

Node.js를 직접 설치할 수도 있지만, nvm(Node Version Manager)이라는 버전 관리 툴을 사용하면 여러 버전의 Node.js를 손쉽게 관리할 수 있어 더욱 유용합니다.

https://github.com/nvm-sh/nvm?tab=readme-ov-file#install--update-script

 

# 1. nvm 설치 스크립트 다운로드 및 실행
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# 2. nvm이 설치된 디렉터리를 환경 변수에 설정하고 nvm 스크립트를 불러와 사용 가능하게 만듦
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

# 3. 가장 최신의 설치된 Node.js 버전 사용 (설치된 버전이 없으면 오류 발생)
nvm use --latest

# 4. Node.js LTS(Long-Term Support) 버전 설치
nvm install --lts

 

4. Node.js 프로젝트 실행하기

원격 접속된 서버 안에 Github 저장소에 있는 프로젝트를 클론하여 "실행"한다. 

이렇게 하고 

# 1. GitHub에서 프로젝트 클론
git clone https://github.com/hazzuu123/library-project.git

# 2. 디렉터리 확인
ls

# 3. 프로젝트 폴더로 이동 (library-project가 클론된 경우)
cd library-project

# 4. 의존성 설치
npm install

# 5. 실행하기
node app.js

 

여기서 끝이 아닙니다. 사용자들이 접근할 수 있도록 특정 포트(ex. 3000)를 열지 않았기 때문입니다.

따라서 AWS 콘솔로 돌아가서 보안 그룹에서  인바운드 규칙을 추가해줍니다. 

 


위와 같은 규칙을 추가하면, 모든 IP(0.0.0.0/0)에서 3000번 포트로 들어오는 요청을 허용하겠다는 의미입니다. 이렇게 설정해야 외부 사용자들이 http://[퍼블릭IP]:3000 주소로 접속할 수 있게 됩니다.

 

 

5.  PM2로 Node.js 애플리케이션 백그라운드 실행하기

서버에서 프로그램이 실행되고 있는 동안에는 http://[퍼블릭IP]:3000 주소로 접속할 수 있다.

하지만 터미널을 닫으면 웹 사이트에 접속할 수 없게 된다. 이러한 상황을 방지하기 위해 PM2 프로세스 매니저를 설치하여 백그라운드로 실행할 수 있도록 한다.

npm install pm2 -g
pm2 start app.js