반응형
말그대로
클라우드 환경에서나 아니면 로컬에서
무중단 배포를 위해
pm2 를 사용하는경우에 개인적으로 겪었던 문제점과
해당 문제를 해결하기위해 강구해낸 방법들을 공유해보려고 합니다
가장먼저 pm2 설치!!
$ sudo npm i -g pm2
$ sudo yarn add -global pm2
설치한다면 pm2 명령어는 딱 3가지만 처음엔 알아도된다
$ pm2 start app.js
$ pm2 log
$ pm2 list
$ pm2 kill
pm2 kill 은 말그대로 종료하는것
start 는 시작
log 는 현재 진행로그현황
list 는 pm2 를 통해 돌아가고있는 서버들을 확인할수있다
Nest 에서 주의해야할점은
// pacakage.json
{
"name": "backend",
"version": "0.0.1",
"description": "",
"author": "",
"private": true,
"license": "UNLICENSED",
"scripts": {
"prebuild": "rimraf dist",
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
},
일반적으로 npm start build 하고 그다음에 npm start nest 이런식으로
1. 빌드
2. 시작
이 가장 중요한데
aws 프리티어 micro 를 쓰고 있다면 램이 1기가 밖에 안되서
build 하는 과정이 몹시 오래걸리거나 멈춰버릴수도있다
이럴경우에는 로컬환경에서 build 를 하고 배포를 진행하도록하자
build 가 되었는지 확인은 프로젝트 폴더안에 dist 폴더가 있는지 확인하면 된다
// pacakage.json
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main"
--------------------------------------------------
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "pm2 start dist/main.js"
로 수정하면
$ npm start:prod nest
할경우에 pm2 가 동작하게된다
// pacakage.json
"start": "nest start",
"start:dev": "ENV=development PORT=80 start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
해당 코드처럼 각 스테이지 마다 환경변수를 추가한경우엔
"start": "nest start",
"start:dev": "ENV=development PORT=80 start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "corss-env ENV=development PORT=80 pm2 start dist/main",
로 변경해준다
yarn 을 사용해서 배포하는경우엔
$ pm2 start yarn --name dist/main.js -- start:prod
이런 형태로 배포하면된다
꼭 해당 명령어를 입력후
pm2 log 에 들어가서 error 없이 동작중인지 확인해야한다 무조건
반응형