AWS

04. AWS pm2 사용하기

Heoky 2022. 2. 18. 23:50

pm2는 내가 서버를 끄고 어떤 작업을 하든 한번 실행해 놓으면 서버가 계속 돌아갈 수 있게 해준다.

foreground process: 터미널을 끄면 같이 꺼짐 (node app)
background process: 터미널을 꺼도 안 꺼짐

$ npm install pm2

pm2를 설치하고 package.json에 scripts를 설정해준다.

pakage.json

"scripts": {
    "dev": "nodemon app",
    "start": "cross-env NODE_ENV=production pm2 start app.js"
  },
// pm2 시작
$ sudo npx pm2 start

// port 끄기
$ sudo npx pm2 kill

// 실행된 port list 확인
$ sudo npx pm2 list

// 실행된 서버 로그 확인하기
$ sudo npx pm2 monit

// 서버 재실행
$ sudo npx pm2 reload all

 

app.js 에서 production mode일 경우 동작할 code를 나눠준다

$ npm install cross-env pm2 helmet hpp

app.js

const hpp = require('hpp'); // node에서 production server 할 떄는 필수
const helmet = require('helmet'); // node에서 production server 할 떄는 필수

// 배포모드일 때와 개발모드일 때 실헹되는 코드를 다르게 한다.
if (process.env.NODE_ENV === 'production') {
  server.use(morgan('combined'));
  server.use(hpp());
  server.use(helmet());
  server.use(
    cors({
      origin: 'http://localhost:3060',
      credentials: true,
    })
  );
} else {
  server.use(morgan('dev')); // 프론트에서 백엔드로 어떤 요청을 보냈는가 확인
  app.use(
    cors({
      origin: 'true',
      credentials: true, // default: false
    })
  );
}

git commit push를 해주고

// Aborting! 에러의 경우
$ git reset --hard

$ git pull
$ npm install

// app.js에 실행되는 port가 80인가 확인
$ vim app.js

$ sudo npm start // or sudo npx pm2 reload all
$ sudo npx pm2 list
$ sudo npx pm2 monit

'AWS' 카테고리의 다른 글

[AWS] nginx + https 적용하기  (0) 2022.02.21
05. AWS 프론트 서버 배포하기  (0) 2022.02.19
03. AWS Ubuntu에 MySQL 설치하기  (0) 2022.02.18
02. Ubuntu에 Node 설치하기  (0) 2022.02.18
01. AWS EC2 생성하기  (0) 2022.02.17