본문 바로가기
Back-End/Infra

"ec2 + pm2 + nginx"를 활용해서 node.js 배포하기 (4)

by 천릉객 2023. 9. 9.

4.  MongoDB활용을 위한 환경변수 설정

문제가 발생했다.

Nodejs 프로젝트를 그대로 Github에 올렸더니 하나의 메일을 받을 수 있었다.

대충 해석하자면 "MongoDB URI가 유출됨"이다.

 

그렇다면 해결법은 ?

임시적으로 내 레포지토리의 공개범위를 Private으로 바꿔버렸지만, 당연히 이건 해결책이 아니다.

찾아보니 "환경변수"를 설정해서 주소를 숨길 수 있으며, Node.js에서는 "dotenv" 모듈을 활용해서 환경변수를 불러와서 사용할 수 있다고 한다.

 

해결 순서

1. dotenv를 활용하는 방향으로 코드 수정

2. 서버 컴퓨터 (ec2 ubuntu 인스턴스)의 프로젝트 루트 디렉토리에 .env 파일을 생성해서 환경변수 관리

 

1.  dotenv를 활용 하는 방향으로 코드 수정

 

  • 터미널에서 npm install dotenv
    • dotenv 모듈을 활용하면 프로젝트 루트 디렉토리의 .env 파일에 환경변수를 정의하고 해당 파일을 읽거와서 현재 Node.js프로세스의 환경변수로 설정할 수 있다.
  • const dotenv = require('dotenv') : dotenv 모듈을 가져와서 dotenv라는 변수에 할당
  • dotenv.config() : .env파일을 읽어와서 로드하는 명령어. 이렇게 하면 process.env 객체에 로드된 환경변수가 저장.
  • const mongoURI = process.env.MONGO_DB_PATH :
    "MONGO_DB_PATH"라는 이름의 환경변수를 찾고, 값을 mongoURI에 할당.

2. 서버 컴퓨터 (ec2 ubuntu 인스턴스)의 프로젝트 루트 디렉토리에 .env 파일을 생성해서 환경변수 관리

  • ubuntu에서도 마찬가지로 npm install dotenv
  • 루트디렉토리에 .env 파일 생성 후 환경변수 작성
  • 프로젝트 재실행 (pm2 restart)

테스트 결과 문제 없이 잘 작동한다.
환경변수를 설정하고 다루는 방법이 생각보다 더 다양한데, 그 중에서 쉽고, 일회성이 아닌 방식을 택해서 진행했다.
다른 방식에 대해서는 추후에..