React와 Node.js를 사용한 웹 애플리케이션 개발

React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(25)

atomicdev 2024. 9. 22. 17:50
728x90

PM2를 사용한 Node.js 서버 관리

이번 강의에서는 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는 자동으로 애플리케이션을 다시 시작할 수 있도록 설정할 수 있습니다.

  1. PM2 서비스 등록
    pm2 startup
     
    이 명령어는 시스템에 맞는 스크립트를 생성해주며, 이 스크립트를 복사하여 실행합니다.
  2. PM2를 시스템 서비스로 등록하여 재부팅 시 자동으로 실행되도록 설정합니다.
  3. 현재 프로세스 저장
    pm2 save
     
  4. 현재 실행 중인 프로세스를 저장하여 재부팅 후에도 동일한 프로세스를 유지합니다.
  5. 시스템 재부팅 시 자동으로 시작
  6. 서버 재부팅 시, 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 애플리케이션을 안정적으로 운영하는 데 필수적인 도구로, 애플리케이션이 예기치 않게 중단되지 않도록 보장하고, 서버 리소스 사용을 최적화할 수 있습니다.

728x90