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 |