728x90

PM2(Process Manager 2)는 Node.js 애플리케이션을 위한 프로덕션 프로세스 관리자입니다. PM2는 애플리케이션을 자동으로 재시작하고, 로드 밸런싱을 제공하며, 로그 관리를 포함한 다양한 기능을 제공하여 애플리케이션의 가용성과 성능을 최적화합니다.

PM2의 주요 기능

  1. 프로세스 관리

    • 애플리케이션을 포크(fork) 또는 클러스터(cluster) 모드로 실행할 수 있습니다.
    • 애플리케이션 크래시 시 자동 재시작을 지원합니다.
  2. 로드 밸런싱

    • 클러스터 모드를 사용하여 여러 코어에서 애플리케이션을 실행하여 로드 밸런싱을 제공합니다.
  3. 로그 관리

    • 애플리케이션 로그를 관리하고 파일로 저장합니다.
    • 로그 파일을 모니터링하고 분석할 수 있습니다.
  4. 모니터링 및 상태 확인

    • 웹 기반 대시보드를 통해 애플리케이션 상태를 모니터링할 수 있습니다.
    • CPU 및 메모리 사용량을 실시간으로 확인할 수 있습니다.
  5. 배포 관리

    • 배포 워크플로우를 자동화하여 여러 서버에 애플리케이션을 쉽게 배포할 수 있습니다.

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 애플리케이션을 프로덕션 환경에서 안정적으로 운영하는 데 매우 유용한 도구입니다.

728x90
반응형

'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

+ Recent posts