PM2를 사용해서 노드 서버를 실행시켜보자 !
*PM2 공식홈페이지
https://pm2.keymetrics.io/
*PM2란?
-> Node.js 프로세스 관리자
node는 싱글 스레드 기반이지만, 멀티 코어 멀티 스레딩을 사용할 수 있게 해준다 !
클라이언트로 부터 요청이 오면 알아서 여러 노드 프로세스에 고르게 분배하는 로드밸런싱 역할을 한다.
<설정>
1. pm2 모듈을 global로 설치한다.
npm install pm2 -g
2. ecosystem.config.js 파일을 생성한다
pm2 ecosystem
=> 해당 파일을 생성하는 이유는 일반적으로 사용하는 env.dev 이런 파일을 pm2가 읽지 못한다고 한다
그래서 pm2가 읽을 수 있는 환경설정 파일을 생성하는 것.
pm2 ecosystem을 실행하면
module.exports = {
apps : [{
script: 'index.js',
watch: '.'
}, {
script: './service-worker/',
watch: ['./service-worker']
}],
deploy : {
production : {
user : 'SSH_USERNAME',
host : 'SSH_HOSTMACHINE',
ref : 'origin/master',
repo : 'GIT_REPOSITORY',
path : 'DESTINATION_PATH',
'pre-deploy-local': '',
'post-deploy' : 'npm install && pm2 reload ecosystehttp://m.config.js --env production',
'pre-setup': ''
}
}
};
이렇게 파일이 생성된다.
apps 항목에 사용하게 될 설정을 작성하면 되고,
deploy는 원격서버와 git을 연동해서 배포하는 방식이다.
<ecosystem.config.js>
이렇게 작성을 해보았다.
(env에 본인의 환경에 맞게 세팅해야함 ! )
<package.json>
ecosystem.config파일과 함께 pm2를 실행하기 위해서
pm2 start ecosystem 라고 하면 된다.
나는 config파일안에 개발모드와 운영모드를 나누어 환경설정을 해두었기 때문에,
package.json 파일의 scripts에 명령구문을 넣는다
개발, 배포모드를 실행하는 명령어로
start:pm2Dev
start:pm2Prod 를 추가했다 !
(그럼 npm run start:pm2Dev로 실행 가능하다)
-- only 옵션은 ecosystem.config.js파일에서 name값이 nodejs_project_dev 인 항목의 설정을 실행시켜주는 옵션이다.
-- env 옵션은 실행되는 항목에 env 설정을 실행시켜주는 옵션이다.
이렇게 production 옵션으로 실행해보니
cluster mode로 서버가 돌아가는것을 확인할 수 있다.
< pm2 의 기본 명령어들 >
-> 공홈에 가면 자세히 나와있음
1. 프로젝트 실행
pm2 start 실행파일이름
pm2 start 실행파일이름 -i 0
=> ' -i 0 ' 옵션을 붙여주는 경우 클러스터 모드로 실행해줌
=> pm2는 자동으로 로드밸러서 역할을 하여서 생성된 각 프로세스 간의 모든 http/ websocket / tcp/ udp 연결을 공유하게 해준다 !
=> 사용가능한 cpu에 따라 최대 프로세스를 시작해줌.
2. 프로세스 상태 확인
pm2 status
3. 프로세스 삭제
pm2 delete 프로세스아이디
4. 모든 프로세스 종료
pm2 kill
'framwork > nodejs' 카테고리의 다른 글
[NodeJS] pnpm 사용하기 (0) | 2024.11.12 |
---|---|
[NodeJS] Nodejs란? (0) | 2024.07.10 |