PM2(Process Manager 2)는 Node.js 애플리케이션을 위한 프로덕션 프로세스 관리자입니다. PM2는 애플리케이션을 자동으로 재시작하고, 로드 밸런싱을 제공하며, 로그 관리를 포함한 다양한 기능을 제공하여 애플리케이션의 가용성과 성능을 최적화합니다.
PM2의 주요 기능
- 프로세스 관리
- 애플리케이션을 포크(fork) 또는 클러스터(cluster) 모드로 실행할 수 있습니다.
- 애플리케이션 크래시 시 자동 재시작을 지원합니다.
- 로드 밸런싱
- 클러스터 모드를 사용하여 여러 코어에서 애플리케이션을 실행하여 로드 밸런싱을 제공합니다.
- 로그 관리
- 애플리케이션 로그를 관리하고 파일로 저장합니다.
- 로그 파일을 모니터링하고 분석할 수 있습니다.
- 모니터링 및 상태 확인
- 웹 기반 대시보드를 통해 애플리케이션 상태를 모니터링할 수 있습니다.
- CPU 및 메모리 사용량을 실시간으로 확인할 수 있습니다.
- 배포 관리
- 배포 워크플로우를 자동화하여 여러 서버에 애플리케이션을 쉽게 배포할 수 있습니다.
PM2 설치
PM2는 NPM(Node Package Manager)을 통해 설치할 수 있습니다.
npm install pm2 -g
PM2 사용 예시
애플리케이션 시작
Node.js 애플리케이션을 PM2로 시작할 수 있습니다.
pm2 start app.js
클러스터 모드로 애플리케이션 시작
클러스터 모드를 사용하여 여러 코어에서 애플리케이션을 실행할 수 있습니다.
pm2 start app.js -i max
-i max: 현재 머신의 모든 CPU 코어를 사용하여 애플리케이션을 실행합니다.
애플리케이션 목록 보기
현재 실행 중인 애플리케이션 목록을 확인할 수 있습니다.
pm2 list
애플리케이션 재시작
특정 애플리케이션을 재시작할 수 있습니다.
pm2 restart app.js
애플리케이션 중지
특정 애플리케이션을 중지할 수 있습니다.
pm2 stop app.js
애플리케이션 로그 보기
실행 중인 애플리케이션의 로그를 실시간으로 확인할 수 있습니다.
pm2 logs
애플리케이션 모니터링
애플리케이션의 CPU 및 메모리 사용량을 실시간으로 모니터링할 수 있습니다.
pm2 monit
PM2 설정 파일
PM2는 설정 파일을 통해 애플리케이션을 구성할 수 있습니다. 설정 파일은 JSON 또는 YAML 형식으로 작성할 수 있으며, 여러 애플리케이션을 한 번에 관리할 수 있습니다.
JSON 설정 파일 예시
// ecosystehttp://m.config.json
{
"apps": [
{
"name": "app",
"script": "./app.js",
"instances": "max",
"exec_mode": "cluster",
"env": {
"NODE_ENV": "development"
},
"env_production": {
"NODE_ENV": "production"
}
}
]
}
YAML 설정 파일 예시
# ecosystehttp://m.config.yml
apps:
- name: app
script: ./app.js
instances: max
exec_mode: cluster
env:
NODE_ENV: development
env_production:
NODE_ENV: production
설정 파일을 사용하여 애플리케이션을 시작할 수 있습니다.
pm2 start ecosystehttp://m.config.json
또는
pm2 start ecosystehttp://m.config.yml
PM2 배포
PM2는 간단한 배포 시스템을 제공하여 여러 서버에 애플리케이션을 쉽게 배포할 수 있습니다.
배포 설정 파일
// ecosystehttp://m.config.json
{
"apps": [
{
"name": "app",
"script": "./app.js"
}
],
"deploy": {
"production": {
"user": "node",
"host": ["212.83.163.1"],
"ref": "origin/master",
"repo": "git@github.com:repo.git",
"path": "/var/www/production",
"post-deploy": "npm install && pm2 reload ecosystehttp://m.config.js --env production"
}
}
}
배포 명령어
pm2 deploy ecosystehttp://m.config.json production setup
pm2 deploy ecosystehttp://m.config.json production
이와 같은 설정을 통해 PM2를 사용하여 Node.js 애플리케이션의 프로세스를 관리하고, 로드 밸런싱을 수행하며, 로그를 모니터링하고, 효율적으로 배포할 수 있습니다. PM2는 Node.js 애플리케이션을 프로덕션 환경에서 안정적으로 운영하는 데 매우 유용한 도구입니다.
'ChatGPT 대답 > 소프트웨어 관련' 카테고리의 다른 글
| Docker 설명해줘 (1) | 2024.07.23 |
|---|---|
| 마리아디비 설명해줘 (1) | 2024.07.22 |
| NodeJS 설명해줘 (0) | 2024.07.22 |
| Webpack 설명해줘 (0) | 2024.07.22 |
| Python REST API Svelte (0) | 2024.07.21 |
