뭐든 즐기면서 ;)

NodeJS env / NodeJS dotenv & pm2 사용법 본문

BACK/NodeJS

NodeJS env / NodeJS dotenv & pm2 사용법

Tada.*+ 2023. 3. 30. 21:14
728x90

1. dotenv 패키지 설치

> npm i dotenv

app.js에 하단 내용 추가

let cookieParser = require('cookie-parser');
let logger = require('morgan');

...

/** Start of 환경 파일 세팅 */
const node_env = process.env.NODE_ENV;
const enum_env = Object.freeze({
    local : 'local'
    ,development: 'development'
    ,production: 'production'
});
let envPath = '.env_';
switch (node_env) {
    case enum_env.local:
        envPath = envPath.concat(enum_env.local);
        break;
    case enum_env.development:
        envPath = envPath.concat(enum_env.development);
        break;
    case enum_env.production:
        envPath = envPath.concat(enum_env.production);
        break;
    default:
        envPath = envPath.concat(enum_env.local);
        break;
}
require('dotenv').config({
    'path': path.join(__dirname, envPath)
});
/** End of 환경 파일 세팅 */


...

let app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

...

.env_[개발 환경] 파일 추가

PORT=9031

DB_NAME=[db명]
DB_ID=[db username]
DB_PW=[db 패스워드]
DB_HOST=[db 서버 ip]
DB_PORT=[db PORT]

env 변수 사용하기 (db_info.js)

const db = {
    db: process.env.DB_NAME
    ,id: process.env.DB_ID
    ,password: process.env.DB_PW
    ,host: process.env.DB_HOST
    ,port: process.env.DB_PORT
};

const uri = `mongodb://${db.id}:${db.password}@${db.host}:${db.port}/${db.db}?directConnection=true&serverSelectionTimeoutMS=2000&authSource=admin&appName=mongosh+1.7.1`;
module.exports = uri;

2. pm2 설치

> npm install pm2

ecosystem.config.js 파일 생성

아래 명령어를 실행하면 ecosystem.config.js 파일이 생성됨.

> pm2 ecosystem

ecosystem.config.js 파일 내용

'use strict';
module.exports = {
  apps: [
    {
      name: '[pm2 명령어 실행시 필요]',
      script: './bin/www',
      wait_ready: true,
      listen_timeout: 10000,
      kill_timeout: 20000,
      env_production: {
        NODE_ENV: "production"
      },
      env_development: {
        NODE_ENV: "development"
      },
      env_staging: {
        NODE_ENV: "staging"
      },
      env_devstaging: {
        NODE_ENV: "devstaging"
      }
    }
  ]
};

3. pm2를 이용하여 node 실행시키기

> pm2 start [ecosystem.config.js 파일] --only [pm2 명령어 실행시 필요] --env development

 

728x90
Comments