[CL] PM2 도입 이유 - 100-hours-a-week/6-nemo-wiki GitHub Wiki
1. pm2란?
pm2는 Node.js 기반의 프로세스 매니저로, 하나의 서버에서 여러 서비스를 안정적으로 실행하고 관리할 수 있게 도와주는 CLI 도구이다.
- 백그라운드 실행
- 앱 자동 재시작 (서버 재부팅, 예외 종료 시)
- 로그 파일 관리 (
pm2 logs
) - 상태 모니터링 (
pm2 list
,pm2 monit
) - 서버 부팅 시 자동 실행 등록 (
pm2 startup
)
2. 도입 배경
초기에는 npm start
, java -jar
, uvicorn
등으로 직접 실행했으며, 다음과 같은 문제가 있었다.
문제 | 기존 방식 |
---|---|
터미널 종료 | 앱 종료 |
서버 재부팅 | 수동 재실행 |
에러 발생 | 자동 복구 불가 |
로그 확인 | 콘솔 출력만 가능 |
다수 서비스 운영 | 개별 실행 및 추적 필요 |
→ pm2
도입을 통해 서비스 실행 안정성, 운영 효율성, 모니터링/로그 관리를 개선함.
3. 설치 및 설정
# pm2 설치
sudo npm install -g pm2
# 서버 재부팅 시 자동 실행 등록
pm2 startup
# 현재 실행 상태 저장
pm2 save
4. 주요 명령어 정리
명령어 | 설명 |
---|---|
pm2 start [script] |
앱 실행 |
pm2 status |
실행 중인 프로세스 상태 확인 |
pm2 logs [name] |
실시간 로그 보기 |
pm2 restart [name] |
앱 재시작 |
pm2 stop [name] |
앱 일시 정지 |
pm2 delete [name] |
앱 종료 및 목록 제거 |
pm2 save |
현재 실행 상태 저장 |
pm2 startup |
서버 부팅 시 자동 실행 등록 |
pm2 monit |
대시보드 형태로 CPU, 메모리, 로그 상태 모니터링 |
5. 참고 사항
- 로그 경로:
/home/ubuntu/.pm2/logs/
- 로그 롤링은
pm2-logrotate
별도 설치 pm2 monit
은 실시간 대시보드로 운영 시 간편하게 상태 확인 가능