Node.js - PM2 본문
미래의 나에게
// PM2 설치
npm install pm2@latest -g
# or
yarn global add pm2
// pm2 실행
pm2 start ecosystem.config.js
// 실행 중인 Pm2 리스트 조회
pm2 ls
// 특정 프로세스 중단
pm2 stop [id]
// 특정 프로세스 삭제
pm2 delete [id]
// 실행 중인 pm2 종료
pm2 kill
// ecosystem.config.js 설치
pm2 init
// babel 모듈
yarn add -D @babel/register
먼저 PM2 는 Node.js 애플리케이션의 프로세스 관리자이며,
백그라운드에서 Node.js 애플리케이션을 실행하고 모니터링 하는 도구이다.
GCP에서 사용했던 인스턴스와 같은 역할을 하는 도구라고 볼 수 있을 것 같다.
먼저, 기본적인 node.js는 CommonJS 문법을 사용하지만,
그간 나는 라이브러리 'babel'을 활용해 ES6문법을 적용하여 코드를 작성해왔다.
왜 이 얘기를 하느냐면, PM2는 ES6문법을 지원하지 않는다는 것이 이번 포스팅 주제이기 때문이다.
이를 해결하기 위해서는 몇 단계를 거쳐야 한다.
1. babel/register 모듈을 설치한다.
해당 모듈은 node.js가 모듈을 로드하기 전에, babel 이 먼저 모듈을 변환시킴으로써,
ES6 문법으로 작성된 코드들을 CommonJS 문법으로 변환시켜주는 모듈이다.
yarn add -D @babel/register
2. ecosystem.config.js 를 작성한다.
아래 명령어를 사용하면, ecosystem.config.js 파일을 자동으로 설치할 수 있다.
pm2 init
이후, ecosystem.config.js 를 아래와 같이 작성한다.
(해당 파일은 자신의 상황에 맞게 적용하면 된다.)
// ecosystem.config.js
module.exports = {
apps: [
{
name: "iwillwin", // 애플리케이션 이름, 크게 중요치 않다.
script: "./src/server.js", // 아래에서 설명
watch: false, // 파일 감지 여부 X, true 로 설정 시 감지 가능
exec_mode: "cluster", // 클러스터 모드, "fork"적용 시, 포크 모드로 실행
instances: 0, // 생성할 프로세스 갯수 / 0일 시 CPU코어에 따라 자동으로 결정
},
],
deploy : {
.... // 중략
}
3. PM2가 진입할 파일 설정
이는 위 apps 객체 내에 있는 script에 관한 내용이다.
주의 사항으로는
script와 일치하는 파일 이름으로 작성하여야 하며,
babel로 모듈이 변환되기 전이니 CommonJS문법인 require로 작성해주어야 한다.
// src/server.js
require("@babel/register"); // 위에서 설명한 babel/register
require("./index.js"); // pm2가 진입할 index.js
이후 아래와 같은 명령어 입력 시 다음과 같이 정상 동작함을 확인할 수 있다.
pm2 start ecosystem.config.js
'개발 > node.js' 카테고리의 다른 글
Nginx 사용기 (0) | 2023.07.05 |
---|---|
node.js - jwtAuth 미들웨어 구현 (0) | 2023.05.01 |
Node.js, 미들웨어 & 라우터 핸들러 (0) | 2023.04.13 |
node.js & graphQL (0) | 2023.04.11 |
ORM / Sequelize & typeORM (0) | 2023.01.29 |