Nomad Jay
디지털노마드 Jay
Nomad Jay
전체 방문자
오늘
어제
반응형
  • 어서오세용✋ (21)
    • 삽질후기👨‍🔧(Ko) (0)
    • 온라인수업후기💻(ko) (0)
    • Programming(ko,en) (15)
      • Python (0)
      • Django (0)
      • Flask (0)
      • Javascript (12)
      • Node.js (1)
      • Nest.js🐱 (1)
      • Typescript (0)
      • DataBase🛢 (0)
      • MySQL (0)
      • MongoDB (0)
      • 리눅스 (0)
      • Basic (0)
      • Computer Science💻 (0)
      • NetWork (0)
      • SelfCodeReview (0)
      • 스티브잡생각스⚙ (0)
      • Book Review📙 (1)
      • iOS (0)
      • Andoroid (0)
    • 잡다한인생이야기🕺 (2)
    • 우당탕탕 유럽 살이 (4)
      • 여행기 (4)
      • 일기 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 유럽여행후기
  • 이탈리아
  • 프론트엔드
  • 유럽렌트카
  • 꿀팁
  • 개발
  • 기본기
  • 타입스크립트
  • 꼬모레이크
  • timecomplexity
  • 모던딥다이브
  • 백엔드
  • 유럽여행
  • 모던자바스크립트딥다이브
  • 개발개념
  • 자바스크립트
  • 개발기본기
  • 당첨수령
  • JavaScript
  • 아랍항공
  • 개발자
  • 리셀후기
  • 기차유럽
  • 비전공자
  • 밀라노
  • 인터라켄
  • 유럽에서기차
  • 스위스
  • 노드
  • 실제유럽후기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Nomad Jay

디지털노마드 Jay

Programming(ko,en)/Nest.js🐱

Nest.js 에서 pm2 를 활용한 배포할시 주의할점

2023. 10. 26. 15:24
반응형

말그대로 

클라우드 환경에서나 아니면 로컬에서 

무중단 배포를 위해

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 없이 동작중인지 확인해야한다 무조건

반응형
저작자표시 (새창열림)
    Nomad Jay
    Nomad Jay
    유럽에 거주중

    티스토리툴바