[GCP/PM2] pm2로 Node.js 에 대한 프로세스 관리하기 (2)

김하정·2024년 1월 4일
1
post-thumbnail
post-custom-banner

pm2는 Node.js 데몬 프로세스 매니저로 무중단 서비스를 제공하거나 클러스터링, 원격관리, 모니터링 등 관리에 필요한 유틸들을 함께 제공해 준다고 한다.

익숙하지 않은 사람들에게는 간단히... 서버가 에러로 인해 꺼졌을 때 다시 켜주는 점..? 등등의 이점이 있다고 설명드릴 수 있다.

다음 블로그에서도 아주 잘 설명이 되어있다.
https://engineering.linecorp.com/ko/blog/pm2-nodejs

1) pm2 설치해주기

pm2를 설치하기 전에, 프로젝트 환경에서 먼저 빌드를 해준 후 설치해보자.

npm run build              // 실행해주어 dist/main.ts 를 생성해주자
npm install -g pm2@latest // 최신 버전으로 설치하기

위까지 진행해주면 pm2를 실행해볼 준비가 되었다.

2) pm2 주요 명령어

pm2를 처음 시작한다면 다음의 명령어들만 숙지하여도 좋다.

pm2 start dist/main.ts      // start로 pm2 시작하기
pm2 log 				   // error 등이 발생해었는지 등등의 log 를 볼 수 있다.
pm2 list.                  // list 는 pm2로 띄어진 서버들을 볼 수 있다.
pm2 kill                  // 종료
pm2 start -name [프로세스명] dist/main.ts // 특정 프로세스를 이름을 지정하여 띄울 경우

3) ecosystem.config.js 파일 생성하기 (선택사항)

위 명령어들로만으로도 서버를 띄울 수 있다!

필자의 경우에는 config 파일을 생성하여 해당 config 파일을 실행시켜 보았다.

아래 내용들 중 필요한 옵션들만 골라서 써줘도 무방하다.

module.exports = {
    apps: [
        {
            name: 'careerHub-backend', // pm2 name
            script: 'dist/main.ts', // 앱 실행 스크립트
            instances: 0, // CPU 코어 수만큼 생성
            exec_mode: 'cluster', // fork, cluster 모드 중 선택
            merge_logs: true, // 클러스터 모드 사용 시 각 클러스터에서 생성되는 로그를 한 파일로 합쳐준다.
            autorestart: true, // 프로세스 실패 시 자동으로 재시작할지 선택
            watch: false, // 파일이 변경되었을 때 재시작 할지 선택
            // max_memory_restart: "512M", // 프로그램의 메모리 크기가 일정 크기 이상이 되면 재시작한다.
            env: {
                // 개발 환경설정
                NODE_ENV: 'development',
            },
            env_production: {
                // 운영 환경설정 (--env production 옵션으로 지정할 수 있다.)
                NODE_ENV: 'production',
            }
        },
    ]
};

실행 명령어는 다음과 같다.

(둘 같은 말!)
pm2 start ecosystem.config.js
pm2 start dist/main.js 
profile
web developer
post-custom-banner

0개의 댓글