pm2는 Node.js 데몬 프로세스 매니저로 무중단 서비스를 제공하거나 클러스터링, 원격관리, 모니터링 등 관리에 필요한 유틸들을 함께 제공해 준다고 한다.
익숙하지 않은 사람들에게는 간단히... 서버가 에러로 인해 꺼졌을 때 다시 켜주는 점..? 등등의 이점이 있다고 설명드릴 수 있다.
다음 블로그에서도 아주 잘 설명이 되어있다.
https://engineering.linecorp.com/ko/blog/pm2-nodejs
pm2를 설치하기 전에, 프로젝트 환경에서 먼저 빌드를 해준 후 설치해보자.
npm run build // 실행해주어 dist/main.ts 를 생성해주자
npm install -g pm2@latest // 최신 버전으로 설치하기
위까지 진행해주면 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 // 특정 프로세스를 이름을 지정하여 띄울 경우
위 명령어들로만으로도 서버를 띄울 수 있다!
필자의 경우에는 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