기본적인 형태
package.json
...
"local": "pm2 start ecosystem.config.cjs",
"start": "pm2 start ecosystem.config.cjs --env production"
...
CJS 버전
module.exports = {
apps: [
{
name: "codeit_fs03_p4_aws_express", // 프로세스 이름
script: "./src/app.js", // 실행할 파일 경로
instances: 1, // max로 설정 시 최대 CPU 코어 개수만큼 실행
exec_mode: "cluster", // 클러스터 모드 (fork - 한 개, cluster - 여러 개)
watch: true, // 파일 변경 시 자동 재시작
// max_memory_restart: "1G", // 메모리 사용량이 1GB를 넘으면 재시작
autorestart: true, // 서버가 크래시 되면 자동 재시작
// 환경변수 설정 (기본값)
env: {
NODE_ENV: "development",
PORT: 3000
},
// 프로덕션 환경에서 사용할 환경변수 (PM2를 --env production 옵션과 함께 실행)
env_production: {
NODE_ENV: "production",
PORT: 8000
},
// 로그 설정
log_date_format: "YYYY-MM-DD HH:mm Z", // 로그 출력 형식
// 로그 파일 설정
error_file: "./logs/err.log", // 에러 로그 파일
out_file: "./logs/out.log", // 일반 로그 파일
combine_logs: true, // 에러 로그와 일반 로그를 하나의 파일에 출력
},
],
};
MJS 버전
export default {
apps: [
{
name: "codeit_fs03_p4_aws_express", // 프로세스 이름
script: "./src/app.js", // 실행할 파일 경로
instances: 1, // max로 설정 시 최대 CPU 코어 개수만큼 실행
exec_mode: "cluster", // 클러스터 모드 (fork - 한 개, cluster - 여러 개)
watch: true, // 파일 변경 시 자동 재시작
// max_memory_restart: "1G", // 메모리 사용량이 1GB를 넘으면 재시작
autorestart: true, // 서버가 크래시 되면 자동 재시작
// 환경변수 설정 (기본값)
env: {
NODE_ENV: "development",
PORT: 3000,
},
// 프로덕션 환경에서 사용할 환경변수 (PM2를 --env production 옵션과 함께 실행)
env_production: {
NODE_ENV: "production",
PORT: 8000,
},
// 로그 설정
log_date_format: "YYYY-MM-DD HH:mm Z", // 로그 출력 형식
// 로그 파일 설정
error_file: "./logs/err.log", // 에러 로그 파일
out_file: "./logs/out.log", // 일반 로그 파일
combine_logs: true, // 에러 로그와 일반 로그를 하나의 파일에 출력
},
],
};
파일 확장자 관련
- CJS와 MJS는 Node.js에서 모듈을 다루는 두 가지 방식이며, 각각
CommonJS (CJS)와 ECMAScript Modules (ESM, 파일 확장자가 .mjs)를 의미합니다.
- 두 방식은 모듈을 정의하고 불러오는 문법과 동작 방식에서 차이가 있습니다.