일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- gitgub actions
- workflow
- pm2
- TLS
- 인증서
- webp
- 리버스 프록시
- 검색엔진최적화
- 성능 개선
- DNS
- aws
- ec2
- https
- SSL
- 브라우저
- nextJS
- 이미지 압축
- 로드 밸런싱
- CI
- 렌더링 과정
- 자동화
- 배포
- certbot
- 이미지 포맷 변경
- 무중단
- nginx
- SSH
- 이미지 최적화
- tcp
- 3-Way HandShake
- Today
- Total
개발일기
pm2로 무중단 배포하기(AWS, NextJs) 본문
📟 PM2란? (Process Manager 2)
Node.js 애플리케이션을 프로덕션 환경에서 안정적으로 실행하고 관리할 수 있게 해주는 프로세스 매니저이다.
애플리케이션이 중단되지 않도록 지속적으로 실행을 유지하고, 필요에 따라 재시작할 수 있게 해준다.
PM2는 NPM을 통해 쉽게 설치할 수 있으며, 간단한 CLI를 제공하여 사용하기 편리하다.
PM2 공식문서를 보려면 여기를 눌러주세요
✈️ PM2를 사용하는 이유
1. 터미널을 꺼도 앱이 계속 실행됨
보통 node 또는 yarn start로 실행한 앱은 터미널을 닫으면 종료된다.
하지만 PM2는 백그라운드에서 앱을 실행해줘서 터미널을 닫아도 앱을 계속 실행시킬 수 있다.
2. 앱이 종료되어도 자동 재시작
서버가 예기치 않게 종료되거나 에러가 발생해도, PM2는 앱을 자동으로 다시 시작한다.
3. 배포 자동화
ecosystem.config.js 파일과 함께 사용하면 pm2 deploy로 배포 자동화가 가능하다.
🚀 배포 자동화란?
"코드를 작성하고 서버에 올릴 때까지의 과정을 자동으로 처리하는 것"
🤔 왜 필요할까?
수동 배포의 순서를 보면 :
- 코드 변경
- git push
- 서버 접속 (SSH)
- 코드 pull (git pull)
- npm install 또는 yarn install
- next build
- 서버 재시작 (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 배포 마무리인듯 하다.
나는 많이 게으른 사람이기 때문에 자동화까지 완료하려고 한다.
'배포 > aws' 카테고리의 다른 글
Github Actions로 CI/CD 구축하기 (0) | 2025.04.28 |
---|---|
NginX, Certbot으로 HTTPS 인증하기 (0) | 2025.04.23 |
가비아 도메인과 EC2 연결하기 (Route53 사용 안함) (0) | 2025.04.22 |
AWS EC2 배포 환경 만들기 (준비하기) (0) | 2025.04.19 |
EC2에 내 프로젝트 클론하기, 리눅스 명령어 파악하기, env파일 생성하기 (0) | 2025.04.18 |