PM2를 사용한 Node.js 서버 관리
이번 강의에서는 PM2를 사용하여 Node.js 애플리케이션을 관리하는 방법을 다룹니다. PM2는 Node.js 애플리케이션을 배포하고, 자동 재시작 및 프로세스 관리, 로깅 등의 기능을 제공하는 프로세스 매니저입니다. 서버 운영을 효율적으로 할 수 있도록 도와주며, 애플리케이션이 중단 없이 동작하도록 보장합니다.
1. PM2 설치 및 기본 사용법
1.1 PM2 설치
PM2는 전역적으로 설치할 수 있습니다. 다음 명령어를 통해 설치를 진행합니다.
npm install -g pm2
설치 후 PM2의 버전을 확인하여 정상적으로 설치되었는지 확인합니다.
pm2 -v
1.2 Node.js 애플리케이션 실행
PM2를 사용하여 Node.js 애플리케이션을 실행하려면 다음 명령어를 사용합니다.
pm2 start app.js
이 명령어는 app.js 파일을 실행하고, 백그라운드에서 애플리케이션을 지속적으로 실행합니다.
1.3 프로세스 상태 확인
PM2로 관리 중인 모든 애플리케이션의 상태를 확인하려면 다음 명령어를 사용합니다.
pm2 list
해당 명령어를 입력하면 각 애플리케이션의 프로세스 ID, 상태, CPU 및 메모리 사용량 등을 확인할 수 있습니다.
1.4 프로세스 중지 및 재시작
- 중지: 특정 애플리케이션을 중지하려면 프로세스 ID를 사용하여 다음 명령어를 실행합니다.
pm2 stop <process_id>
- 재시작: 애플리케이션을 다시 시작하려면 다음 명령어를 사용합니다.
pm2 restart <process_id>
1.5 애플리케이션 로그 확인
애플리케이션의 실시간 로그를 확인하려면 다음 명령어를 사용할 수 있습니다.
pm2 logs
이 명령어는 모든 애플리케이션의 실시간 로그를 터미널에 출력합니다.
2. 애플리케이션 자동 재시작
2.1 크래시 발생 시 자동 재시작
PM2의 가장 큰 장점 중 하나는 애플리케이션이 충돌하거나 예기치 않게 종료되었을 때 자동으로 재시작할 수 있다는 점입니다. PM2는 애플리케이션 상태를 지속적으로 모니터링하며, 충돌 시 즉시 재시작합니다.
2.2 시스템 재부팅 후 자동 재시작 설정
서버가 재부팅되었을 때, PM2는 자동으로 애플리케이션을 다시 시작할 수 있도록 설정할 수 있습니다.
- PM2 서비스 등록
pm2 startup
- PM2를 시스템 서비스로 등록하여 재부팅 시 자동으로 실행되도록 설정합니다.
- 현재 프로세스 저장
pm2 save
- 현재 실행 중인 프로세스를 저장하여 재부팅 후에도 동일한 프로세스를 유지합니다.
- 시스템 재부팅 시 자동으로 시작
- 서버 재부팅 시, PM2는 이전에 실행 중이던 모든 애플리케이션을 자동으로 재시작합니다.
3. 프로세스 관리 및 모니터링
3.1 프로세스 수동 설정
PM2는 단일 프로세스뿐만 아니라 여러 프로세스를 동시에 실행할 수 있습니다. 예를 들어, CPU 코어 수에 맞게 여러 개의 인스턴스를 실행하여 부하를 분산할 수 있습니다.
pm2 start app.js -i max
위 명령어는 가능한 모든 CPU 코어를 사용하여 애플리케이션을 실행합니다.
3.2 프로세스 모니터링
PM2는 모니터링 기능을 제공하여 CPU와 메모리 사용량을 실시간으로 추적할 수 있습니다.
pm2 monit
이 명령어는 각 애플리케이션의 상태와 리소스 사용량을 실시간으로 모니터링할 수 있는 대시보드를 표시합니다.
4. PM2 설정 파일 사용
PM2는 설정 파일을 통해 여러 애플리케이션을 동시에 관리할 수 있습니다. 이를 위해 ecosystem.config.js 파일을 사용합니다.
4.1 PM2 설정 파일 생성
PM2 설정 파일을 생성하고, 여러 애플리케이션의 설정을 정의할 수 있습니다.
pm2 init
다음과 같은 ecosystem.config.js 파일이 생성됩니다.
module.exports = {
apps: [
{
name: 'my-app',
script: './app.js',
instances: 2,
exec_mode: 'cluster',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}
]
};
4.2 설정 파일을 사용한 애플리케이션 실행
이 설정 파일을 사용해 PM2에서 애플리케이션을 실행할 수 있습니다.
pm2 start ecosystem.config.js --env production
5. PM2의 기타 기능
- Zero-Downtime Reloading: PM2는 애플리케이션을 중단하지 않고 코드를 변경할 수 있는 제로 다운타임 기능을 제공합니다.
pm2 reload <app_name>
- Watch 모드: 코드 변경이 감지될 때 자동으로 애플리케이션을 재시작합니다.
pm2 start app.js --watch
- 메트릭 수집: PM2는 애플리케이션의 성능 메트릭을 수집할 수 있으며, 이를 통해 서버 성능을 분석할 수 있습니다.
결론
이번 강의에서는 PM2를 사용하여 Node.js 애플리케이션을 관리하고, 자동 재시작 및 프로세스 모니터링을 설정하는 방법을 배웠습니다. PM2는 Node.js 애플리케이션을 안정적으로 운영하는 데 필수적인 도구로, 애플리케이션이 예기치 않게 중단되지 않도록 보장하고, 서버 리소스 사용을 최적화할 수 있습니다.
'React와 Node.js를 사용한 웹 애플리케이션 개발' 카테고리의 다른 글
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(27) (1) | 2024.09.22 |
---|---|
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(26) (1) | 2024.09.22 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(24) (3) | 2024.09.22 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(22) (1) | 2024.09.22 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(21) (1) | 2024.09.21 |