PM2를 사용하여 express-generator 앱 무중단 배포

itbuddy·2024년 8월 28일

꿀팁

목록 보기
4/12

evernote 20200618 자료입니다.
express-generator를 통하여 서비스를 만들면 다음과 같은 폴더 구조가 만들어 지는데요.
이코드와 pm2를 활용해서 무중단 배포를 수행하는 것입니다.
** kubernetes가 없는 환경에서는 유용하겠네요.

  1. 패키지 설치
    npm install --save process pm2

2.bin/www 수정

위코드를 아래코드로 바꾸시면 됩니다.

server.listen(port,function(){
  process.send('ready');
  console.log('application is listening on port ${port}');
});
server.on('error', onError);
server.on('listening', onListening);

let isDisableKeepAlive = false
app.use(function (req, res, next) {
  if (isDisableKeepAlive) {
    res.set('Connection', 'close');
  }
  next();
})

process.on('SIGINT', function () {
  isDisableKeepAlive = true;
  app.close(function () {
    console.log('server closed');
    process.exit(0);
  })
})
  1. app.js와 같은 위치에 ecosystem.config.js 생성
module.exports = {
    apps: [{
        name: 'express-example',
        script: './bin/www',
        instances: 4,
        exec_mode: 'cluster',
        wait_ready: true,
        listen_timeout: 50000,
        kill_timeout: 5000
    }]
}
  1. pm2로 인스턴스 시작
$ pm2 start ecosystem.config.js
  1. 소스 업데이트시
$ pm2 reload all

위글을 쓸때 참고 했던 글 Line Engineering

후기

무려 4년전에는 Node.js도 같이 열심히 공부했었습니다.

profile
프론트도 조금 아는 짱구 같은 서버 프로그래머

0개의 댓글