AWS EC2에 Node.js, TypeScript 기반 NestJS 프로젝트 구축 방법
NestJS 프로젝트 구축 방법
Node.js 위에서 실행되는 TypeScript 서버 프레임워크인 NestJS 프로젝트 생성 방법입니다.
로컬에 Node.js 및 npm이 설치되어 있어야 정상적으로 설치가 가능합니다.
Node.js 및 npm 설치 확인
node --version
npm --version
Nest CLI 설치
npm i -g @nestjs/cli
Nest CLI 정상 설치 확인
nest --version
NestJS 프로젝트 생성
nest new 프로젝트명
설치 중 패키지 매니저는 npm을 선택하면 됩니다.
NestJS 프로젝트 구조
프로젝트명/
├── src/
│ ├── app.controller.spec.ts # app.controller.ts에 대한 단위테스트 파일
│ ├── app.controller.ts # API 엔드 포인트 작성 파일 (요청을 처리하는 컨트롤러)
│ ├── app.module.ts # 애플리케이션 모듈 구성 파일
│ ├── app.service.ts # 서비스 로직 관리 파일
│ └── main.ts # 애플리케이션 시작 파일
├── test/ # E2E (End-to-End) 테스트 관련 파일 폴더
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
├── package.json # 스크립트 및 라이브러리 의존성 관리 파일
├── nest-cli.json # Nest CLI 설정 파일
└── tsconfig.json # 타입스크립트 설정 파일
큰 틀에서는 위와 같은 구조로 NestJS 프로젝트가 생성됩니다.
E2E 테스트는 실제 사용자 요청부터 응답까지 전체 흐름이 정상인지 테스트합니다.
NestJS 프로젝트 실행 방법
npm run start
또는
npm run start:dev # 개발 중 변경사항 자동 반영
또는
npm run build # 빌드
node dist/main.js # 빌드된 프로젝트 실행
프로젝트 정상 실행 확인 명령어
curl localhost:3000
NestJS 프로젝트 생성 직후에는 Hello World! 라는 문자열이 출력되어야 합니다.
EC2 서버에서 PM2로 NestJS 프로젝트 실행 방법
EC2 인스턴스 생성
AWS > EC2 검색 > Instances 메뉴 > Launch instances 버튼 > Name : ci-test-server 입력 > Quick Start : Amazon Linux 선택 > Instance type : t2.micro 선택 (Free tier eligible 여부 확인) > Key pair (login) : Create new key pair 클릭 > Key pair name : ci-test-server-key 입력 > Create key pair > 다운로드된 키 파일 보관 > Launch instances 버튼 > EC2 Instance state가 Running이고 Status check가 initializing에서 2/2 checks passed로 변경되면 연결 가능
EC2 보안 그룹 인바운드 규칙 설정
AWS > EC2 검색 > Instances 메뉴 > ci-test-server 인스턴스 선택 > Security 메뉴 > Security groups 항목 클릭 > Inbound rules 탭 > Edit inbound rules 버튼 > Add rule 버튼 > Type : Custom TCP 선택 > Port range : 3000 입력 > Source : Anywhere-IPv4 (0.0.0.0/0) 선택 > Save rules
NestJS 기본 포트 3000으로 들어오는 요청을 받을 수 있도록 인바운드 규칙을 추가합니다.
실제 운영 환경에서는 특정 IP나 ALB 보안 그룹으로 제한하는 것이 좋습니다.
EC2 서버에 필수 패키지 설치
sudo yum update -y
curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
sudo npm install pm2 -g
NestJS 프로젝트 실행을 위해 Node.js와 npm을 설치하고, npm으로 PM2를 설치합니다.
PM2 패키지로 Node.js 기반 프로젝트를 실행시키고 관리할 수 있습니다.
정상 설치 확인
node --version
npm --version
pm2 --version
프로젝트 의존성 패키지 설치
# package.json 기준으로 의존성 설치 (package-lock.json이 있으면 함께 참고)
npm install
또는
# package-lock.json 기준으로 의존성 설치 (동일한 의존성 버전을 정확히 재현하여 배포 환경에서 권장)
npm ci
프로젝트를 서버에 올린 뒤에는 의존성 패키지를 설치하여 node_modules 폴더를 생성해야 실행할 수 있습니다.
PM2 사용하여 NestJS 프로젝트 실행
npm run build
pm2 start dist/main.js --name "프로세스명"
npm으로 NestJS 프로젝트의 TypeScript 코드를 JavaScript로 빌드하고,
PM2를 사용하여 빌드된 dist/main.js 파일을 실행합니다.
실행 중 프로세스 목록 확인
pm2 list
Node.js 기반 프로세스가 실행되고 있는 것을 볼 수 있습니다.
로그 확인
pm2 logs
NestJS 애플리케이션 연결 확인
http://리눅스서버외부IP:3000
3000번 포트에서 실행 중인 NestJS 애플리케이션 응답을 웹 브라우저로 확인합니다.
PM2 프로세스 중지 방법
pm2 stop 프로세스명
PM2 프로세스 중지 및 삭제 방법
pm2 delete 프로세스명