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 |