반응형
운영 환경 배포를 위한 PM2 설치
npm install -g pm2
(pm2 는 global로 설치하는게 편하다..)
기본적으로 pm2 를 이용해 인스턴스를 구동하는 방법은 간단하다.
pm2 start server.js
옵션은 공식 pm2 사이트에서 확인. (https://pm2.keymetrics.io/docs/usage/quick-start/)
정상적으로 인스턴스가 실행되면,
위와 같이 확인이 된다.
인스턴스에 대한 설정을 담아놓고 실행시키는것도 가능하다.
일단 ecosystem.config.js 파일을 작성한다.
module.exports = {
apps: [
{
name: 'nodejs-sequelize-pm2', // pm2 name
script: './server.js', // // 앱 실행 스크립트
instances: 3, // 클러스터 모드 사용 시 생성할 인스턴스 수
exec_mode: 'cluster', // fork, cluster 모드 중 선택
merge_logs: true, // 클러스터 모드 사용 시 각 클러스터에서 생성되는 로그를 한 파일로 합쳐준다.
autorestart: true, // 프로세스 실패 시 자동으로 재시작할지 선택
watch: false, // 파일이 변경되었을 때 재시작 할지 선택
// max_memory_restart: "512M", // 프로그램의 메모리 크기가 일정 크기 이상이 되면 재시작한다.
env: {
// 개발 환경설정
NODE_ENV: 'development',
},
env_production: {
// 운영 환경설정 (--env production 옵션으로 지정할 수 있다.)
NODE_ENV: 'production',
}
},
]
};
이 후 pm2 start ecosystem.config.js 로 구동하면 해당 설정이 반영된 인스턴스가 시작되는것을 확인할 수 있다.
확인을 위해 인스턴스를 3으로 설정했다.
정상적으로 실행된 것을 확인할 수 있다.
마지막으로 개발환경에서 사용했던 babel-node 처럼 pm2를 구동하려고 한다.
이를 위해 필요한 패키지를 설치하고 스크립트를 작성한다.
npm i -D @babel/register
// server-register.js
require('@babel/register');
require('./server');
이 후 ecosystem의 실행스크립트를 server-register.js 로 바꿔준다.
module.exports = {
apps: [
{
name: 'nodejs-sequelize-pm2', // pm2 name
script: './server-register.js', // // 앱 실행 스크립트
instances: 3, // 클러스터 모드 사용 시 생성할 인스턴스 수
exec_mode: 'cluster', // fork, cluster 모드 중 선택
merge_logs: true, // 클러스터 모드 사용 시 각 클러스터에서 생성되는 로그를 한 파일로 합쳐준다.
autorestart: true, // 프로세스 실패 시 자동으로 재시작할지 선택
watch: false, // 파일이 변경되었을 때 재시작 할지 선택
// max_memory_restart: "512M", // 프로그램의 메모리 크기가 일정 크기 이상이 되면 재시작한다.
env: {
// 개발 환경설정
NODE_ENV: 'development',
},
env_production: {
// 운영 환경설정 (--env production 옵션으로 지정할 수 있다.)
NODE_ENV: 'production',
}
},
]
};
이 후 pm2 로 해당 인스턴스를 구동하면 es6 이상의 스펙에서도 Nodejs가 이상없이 돌아가는 것을 확인할 수 있다.
참고소스
https://github.com/sbjang123456/nodejs-sequelize-pm2.git
반응형
'Nodejs' 카테고리의 다른 글
사용자 접속 IP 가져오기 (0) | 2022.01.11 |
---|---|
Window NVM 설치 및 설정 (0) | 2022.01.10 |
Nodejs 로그 라이브러리 (log4js or winston) 적용 (0) | 2021.04.18 |
Nodejs 상대경로 지옥 탈출하기 (0) | 2021.04.08 |
Nodejs 개발환경 구성(nodemon, babel-node) (0) | 2021.04.04 |