개발일기

pm2로 무중단 배포하기(AWS, NextJs) 본문

배포/aws

pm2로 무중단 배포하기(AWS, NextJs)

황대성 2025. 4. 24. 01:53

📟 PM2란? (Process Manager 2)

Node.js 애플리케이션을 프로덕션 환경에서 안정적으로 실행하고 관리할 수 있게 해주는 프로세스 매니저이다.

애플리케이션이 중단되지 않도록 지속적으로 실행을 유지하고, 필요에 따라 재시작할 수 있게 해준다.

PM2는 NPM을 통해 쉽게 설치할 수 있으며, 간단한 CLI를 제공하여 사용하기 편리하다. 

 

PM2 공식문서를 보려면 여기를 눌러주세요

 

✈️ PM2를 사용하는 이유

1. 터미널을 꺼도 앱이 계속 실행됨

보통 node 또는 yarn start로 실행한 앱은 터미널을 닫으면 종료된다.
하지만 PM2는 백그라운드에서 앱을 실행해줘서 터미널을 닫아도 앱을 계속 실행시킬 수 있다.

2. 앱이 종료되어도 자동 재시작

서버가 예기치 않게 종료되거나 에러가 발생해도, PM2는 앱을 자동으로 다시 시작한다.

3. 배포 자동화

ecosystem.config.js 파일과 함께 사용하면 pm2 deploy로 배포 자동화가 가능하다.

🚀 배포 자동화란?

"코드를 작성하고 서버에 올릴 때까지의 과정을 자동으로 처리하는 것"


🤔 왜 필요할까?

수동 배포의 순서를 보면  : 

  1. 코드 변경
  2. git push
  3. 서버 접속 (SSH)
  4. 코드 pull (git pull)
  5. npm install 또는 yarn install
  6. next build
  7. 서버 재시작 (pm2 restart 등)

해야할 것들이 너무 많고, 번거롭기 때문에 실수할 가능성을 배제할 순 없음

솔직히 많이 귀찮기 때문에 자동화를 한다고 생각한다.

 

 

💻 기본 사용법

✅ 설치

npm install -g pm2


✅ 앱 실행

**⚠️유의사항 : 반드시 내 프로젝트 루트에서 실행해야 함**

  • 처음 실행 시 : npm start 명령어를 실행하여 package.json에 정의된 start 스크립트를 실행한다.
pm2 start npm --name my-app -- start

 

  • 그 후 애플리케이션을 관리할 때: 아래 명령어와 그 외의 명령어로 관리한다.
pm2 start my-app

앱 실행 또는 앱 리스트 확인하면 위와 같은 화면이 나온다.

위와 같은 화면이 나온다면 PM2 백그라운드에서 my-app을 실행중이라는 화면이다.


✅ 앱 리스트 확인

pm2 list
or
pm2 ls
or
pm2 status


✅ 로그 보기

pm2 logs


✅ 앱 재시작

pm2 restart my-app


✅ 앱 삭제

pm2 delete my-app
or
pm2 delete id

 

✅ 앱 종료

pm2 stop my-app


✅ 서버 재부팅해도 자동 시작되도록 설정

pm2 startup # 시스템 시작 시 pm2 자동 실행 설정
pm2 save # 현재 실행 중인 앱들 저장

 

우리는 여기서 PM2 설치 → 앱 실행 → pm2 자동 실행(선택) 까지만 해도 무중단 배포가 가능하다.

여기까지가 AWS 배포 마무리인듯 하다.

나는 많이 게으른 사람이기 때문에 자동화까지 완료하려고 한다.