PM2, 애플리케이션 프로세스 관리를 위한 도구

PM2는 Node.js 애플리케이션을 위한 강력한 프로세스 관리자입니다. 프로덕션 환경에서 애플리케이션을 실행하고 관리하는 데 필요한 많은 기능을 제공합니다. 이 블로그 포스트에서는 PM2의 기본 개념과 사용법에 대해 알아보겠습니다.

PM2란?

PM2(Process Manager 2)는 애플리케이션을 위한 프로덕션 프로세스 관리자입니다. 다음과 같은 주요 기능을 제공합니다:

  • 프로세스 관리: 애플리케이션을 백그라운드에서 실행하고 관리
  • 자동 재시작: 애플리케이션 충돌 시 자동으로 재시작
  • 로드 밸런싱: 클러스터 모드를 통한 CPU 코어 활용 최적화
  • 로그 관리: 애플리케이션 로그를 쉽게 관리
  • 모니터링: 메모리 사용량, CPU 사용량 등 모니터링
  • 무중단 배포: 애플리케이션 재시작 없이 업데이트 가능

설치 방법

PM2는 npm을 통해 전역으로 설치할 수 있습니다:

기본 사용법

애플리케이션 시작하기

가장 기본적인 사용법은 다음과 같습니다:

주요 명령어

[ pm2 list 실행화면]
[pm2 monit 실행화면, 실시간 로그를 모니터링할 수 있음]
[pm2 logs 실행화면, 프로세스 실행 중 로그가 발생되면 모두 볼수 있음]

고급 사용법

클러스터 모드로 실행하기

Node.js는 단일 스레드로 동작하지만, PM2의 클러스터 모드를 사용하면 여러 CPU 코어를 활용할 수 있습니다:

환경 변수 설정

프로세스 이름 지정

로그 파일 설정

설정 파일 사용하기

복잡한 설정은 ecosystem.config.js 파일을 사용하여 관리할 수 있습니다:

설정 파일을 사용하여 애플리케이션을 시작하려면:

실제 사용 예제

예제 1: Express 애플리케이션 실행

예제 2: 웹 서버와 워커 함께 실행하기

다음과 같은 ecosystem.config.js 파일을 만들어 여러 애플리케이션을 관리할 수 있습니다:

실행:

예제 3: 로그 관리와 모니터링

자동 시작 설정

서버 재부팅 후에도 PM2가 자동으로 시작되도록 설정할 수 있습니다:


PM2로 Python 애플리케이션 실행하기

PM2는 주로 Node.js 애플리케이션을 위한 프로세스 관리자로 알려져 있지만, Python을 포함한 다른 언어로 작성된 애플리케이션도 관리할 수 있습니다. 아래에서 PM2를 사용하여 Python 애플리케이션을 실행하는 방법에 대해도 자세히 설명해 드리겠습니다.

기본 Python 스크립트 실행

Python 스크립트를 PM2로 실행하는 가장 기본적인 방법은 다음과 같습니다:

Python 버전을 명시적으로 지정하려면:

가상 환경(Virtual Environment)에서 실행

Python 프로젝트는 대부분 가상 환경을 사용하므로, 가상 환경에 설치된 Python을 사용하여 스크립트를 실행하는 방법은 다음과 같습니다:

예를 들어:

Python 웹 애플리케이션 실행 예제

Flask 애플리케이션 실행

Django 애플리케이션 실행

이때 -- 뒤에 오는 인자들은 Python 스크립트에 전달됩니다.

ecosystem.config.js를 사용한 설정

보다 복잡한 설정은 configuration 파일을 사용하면 편리합니다:

그리고 다음과 같이 실행합니다:

고급 설정 옵션

명령줄 인자 전달

환경 변수 설정

자동 재시작 설정

로그 파일 지정


실제 사용 예제

예제 1: Flask API 서버

예제 2: 주기적 실행 작업

예제 3: Flask와 Celery 워커 함께 실행

유의사항

  1. Python 애플리케이션은 Node.js와 달리 PM2의 클러스터 모드(-i max)를 직접적으로 활용할 수 없습니다. 대신 여러 인스턴스를 개별적으로 실행해야 합니다.
  2. 가상 환경을 사용하는 경우 항상 절대 경로를 사용하는 것이 안전합니다.
  3. Python 애플리케이션이 출력하는 로그가 즉시 표시되지 않는 경우, PYTHONUNBUFFERED=1 환경 변수를 설정하여 버퍼링을 비활성화할 수 있습니다.
  4. Flask나 Django와 같은 웹 프레임워크를 사용할 때는 개발 서버가 아닌 Gunicorn이나 uWSGI와 같은 프로덕션 WSGI 서버를 사용하는 것이 좋습니다.

PM2를 활용하여 Python 애플리케이션을 관리함으로써, 안정적인 실행 환경과 모니터링, 자동 재시작 등의 기능을 활용할 수 있습니다. 특히 웹 애플리케이션이나 주기적인 데이터 처리 작업에 매우 유용합니다.

결론

PM2는 애플리케이션의 프로덕션 환경 관리를 위한 강력한 도구입니다. 프로세스 관리, 자동 재시작, 로드 밸런싱, 모니터링 등 다양한 기능을 제공하여 안정적인 서비스 운영을 가능하게 합니다. 이 글을 통해 PM2의 기본적인 사용법부터 고급 설정, Python까지 알아보았습니다. 애플리케이션을 프로덕션 환경에서 운영한다면 PM2는 반드시 고려해야 할 도구입니다.


게시됨

카테고리

,

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다