목차
PM2란?
**PM2(Process Manager 2)**는 Node.js 애플리케이션을 운영환경에서 관리해주는 프로세스 관리자입니다.
주요 기능:
- 애플리케이션 자동 재시작 (오류 발생 시)
- 로드 밸런싱 (클러스터링)
- 로그 관리
- 서버 재부팅 시 자동 실행
PM2 설치
- Node.js 설치 완료 (v10 이상 권장)
- npm 사용 가능
npm install pm2 -g
-g
옵션은 글로벌 설치를 의미합니다. 이제 어느 디렉토리에서든 pm2
명령어를 사용할 수 있습니다.
PM2 기본 명령어
명령어 | 설명 | 예시 |
---|---|---|
pm2 start <파일명> |
애플리케이션 실행 | pm2 start app.js |
pm2 start <파일명> --name <앱이름> |
앱 이름 지정하여 실행 | pm2 start app.js --name my-app |
pm2 list |
실행 중인 앱 목록 보기 | pm2 list |
pm2 stop <앱이름 또는 ID> |
앱 중지 | pm2 stop my-app |
pm2 restart <앱이름 또는 ID> |
앱 재시작 | pm2 restart my-app |
pm2 delete <앱이름 또는 ID> |
앱 영구 종료 및 목록에서 삭제 | pm2 delete my-app |
pm2 logs |
전체 로그 실시간 보기 | pm2 logs |
pm2 logs <앱이름> |
특정 앱 로그 보기 | pm2 logs my-app |
pm2 monit |
실시간 시스템 상태 및 리소스 모니터링 | pm2 monit |
pm2 save |
현재 실행 중 상태 저장 | pm2 save |
pm2 startup |
재부팅 후 자동 실행 설정 | pm2 startup |
pm2 reload <앱이름> |
무중단 재시작 (클러스터 앱에 유용) | pm2 reload my-app |
pm2 show <앱이름> |
앱 상세 정보 확인 | pm2 show my-app |
PM2로 Node.js 앱 실행하기
Node.js로 만든 서버 파일이 app.js
라는 이름으로 있다고 가정해봅시다. 이 파일을 PM2를 이용해 실행하는 방법은 매우 간단합니다.
기본 실행
pm2 start app.js
이 명령어만 입력하면 app.js
파일이 백그라운드에서 실행됩니다.
PM2는 자동으로 이 프로세스를 관리하게 되며, 서버가 죽어도 자동으로 재시작해줍니다.
앱 이름 지정해서 실행
기본적으로는 실행한 파일명이 앱 이름이 되지만, 직접 이름을 지정하면 관리가 더 편합니다.
pm2 start app.js --name my-app
--name
옵션으로 앱에 고유한 이름을 부여하면 이후 restart
, stop
, logs
등의 명령어를 사용할 때 훨씬 간편합니다.
pm2 restart my-app
pm2 logs my-app
포트나 환경변수 설정이 필요한 경우
다음과 같이 환경변수를 넘겨서 실행할 수도 있습니다.
PORT=4000 NODE_ENV=production pm2 start app.js --name my-api
또는 .env
파일을 사용하고 싶다면 dotenv 패키지와 함께 실행하도록 코드를 구성하고, 아래와 같이 실행하면 됩니다.
JSON 설정 파일로 실행
여러 개의 앱을 동시에 실행하거나 복잡한 설정이 필요할 경우, ecosystem.config.js
또는 ecosystem.json
파일을 만들어서 관리할 수 있습니다.
pm2 start ecosystem.config.js
// ecosystem.config.js
module.exports = {
apps: [
{
name: "my-app",
script: "app.js",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
},
},
],
};
PM2로 모니터링 하기
pm2 monit
– 실시간 모니터링 대시보드
pm2 monit
이 명령어를 입력하면, 터미널에 다음과 같은 대시보드 화면이 나타납니다:
- 각 앱의 CPU 사용량
- 메모리 사용량
- 실행 상태 (
online
,stopped
,errored
등) - 재시작 횟수 등
💡 여러 애플리케이션을 운영 중이라면, 상태를 한눈에 파악할 수 있어 매우 유용합니다.
pm2 logs
– 실시간 로그 보기
pm2 logs
전체 앱의 실시간 로그를 터미널에 출력합니다.
에러, 콘솔 출력(console.log
) 모두 확인 가능
특정 앱의 로그만 보고 싶다면:
pm2 logs my-app
👉 로그는 자동으로 파일로도 저장됩니다. 위치는 기본적으로:
~/.pm2/logs/
예: my-app-out.log
, my-app-error.log
pm2 show
또는 pm2 describe
– 앱 상세 정보 보기
pm2 show my-app
pm2 describe my-app
출력 정보 예시:
- 앱 상태
- 실행 경로
- 포트 및 환경변수
- 로그 파일 경로
- 리소스 사용 현황 등
마무리
PM2는 Node.js 서버 운영에 있어 가장 강력하고 유용한 도구입니다.
프로젝트를 실제 운영하는 상황이라면 꼭 도입해보세요!