NestJS 서버를 백그라운드로 실행해보려고 한다.
이전 Django 프로젝트에서는 nohup과 gunicorn을 이용했었는데, NestJS에서는 어떤 프로그램을 이용하면 좋을까?
찾아보니 node 계열에서 사용하는 모듈은 forever, pm2, nodemon 등이 있다.
그 중에서도 forerver라는 npm 모듈을 사용해서 서버를 돌려보려고 한다.
sudo npm install forever -g
안 되면 sudo
를 빼고 시도해보자.
package.json 파일의 scripts
에 "forever": "forever start -m 999 -a -o log/out.log -e log/err.log dist/main.js"
를 추가한다.
(json 파일이므로 불필요한 ,
등이 없는지 잘 확인한다.)
// package.json
{
"name": "nest-project",
"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",
"forever": "forever start -m 999 -a -o log/out.log -e log/err.log dist/main.js" // 이 부분 추가!!
},
서버를 실행한다.
npm run forever
서버가 구동되고 있는지 확인해본다.
forever list
stop 뒤에 중지하고 싶은 서버의 번호를 적어준다.
forever stop 0
서버가 중지되었는지 확인한다.
forever list