[8일차] Node.js, MongoDB - Part 3 : .env 파일에서 민감한 환경변수들 관리하기

흑염소·2023년 9월 7일

📕 .env 파일로 환경변수 관리하기

여태까지 작성한 server 코드를 보면 이런 부분이 있다.

var db;
MongoClient.connect('mongodb+srv://주소:어쩌구@저쩌구', function(err, client){
  if (err) return console.log(err)
  db = client.db('Example1');
  app.listen(8080, function() {
    console.log('listening on 8080')
  })
}) 

8080 포트번호, mongodb+srv라고 시작하는 DB접속 문자열이 존재한다.
이런 값들은 다른 개발환경이나 다른 컴퓨터로 코드를 옮긴다면 수정이 필요할 수 있다.

다른 컴퓨터에선 8070 포트를 연다던지
나중에 DB 이사를 가서 DB접속 문자열이 바뀐다던지
내가 만든 코드를 팀원과 공유해야하는데 아이디와 비밀번호가 민감하다던지
다양한 경우의 수가 있기 때문.

이런 환경에 따라 가변적인 변수 데이터들을 보통 환경변수(environment variable)라고 부르는데 경우의 수를 고려해서 코딩하기 위해 환경변수를 한곳에 모아서 관리한다.

방식은 .env라는 파일에 모든 중요 환경변수들을 넣어놓고 server.js에 가서 .env 파일에 있는 변수를 꺼내다 쓰는 식으로 코딩한다.
만약 server.js 파일이 털려도 중요 정보가 env 파일에 있기 때문에 조그마한 보안상 이점이 있기도 하다.
그렇다면 구체적인 사용법을 알아보자.

.env 파일 사용 방법

1. 환경변수 사용을 위한 라이브러리 설치

npm install dotenv

2. 환경변수가 있는 server.js에 방금 설치한 라이브러리 등록

(server.js)

require('dotenv').config()

server.js 파일 상단에 한줄 추가해준다.
이러면 이제 하단에서 환경변수를 자유롭게 사용 가능.

3. server.js와 동일한 경로에 .env 파일을 생성 & 셋팅

파일을 만들고 거기에 모든 환경변수들을 저장해주면 된다.

(.env 파일)

PORT=8080
DB_URL="mongodb+srv://경로@저쩌구"

형식은 var 문법으로 숫자, 문자 변수만드는거랑 똑같이 왼쪽엔 변수명, 오른쪽은 값을 넣는다고 보면 된다.
변수 이름들은 보통 대문자로 표기한다.
.env 파일에 모든 환경변수를 모아놓으면 나중에 이 파일만 수정하면 되므로 관리가 편리하다.
나중에 작업환경이 바뀌거나 클라우드에 올릴 때도 이부분만 수정해주면 쉽게 환경셋팅이 가능함.

4. 환경변수들을 server.js에 불러오기

(기존 server.js 코드)

var db;
MongoClient.connect('mongodb+srv://경로:어쩌구@저쩌구', function(err, client){
  if (err) return console.log(err)
  db = client.db('Example1');
  app.listen(8080, function() {
    console.log('listening on 8080')
  })
}) 


(env 파일을 적용하는 server.js 코드)

var db;
  MongoClient.connect(process.env.DB_URL, function(err, client){
  if (err) return console.log(err)
  db = client.db('Example1');
  app.listen(process.env.PORT, function() {
    console.log('listening on 8080')
  })
}) 

server.js에서 .env파일의 변수들을 불러올 때는 process.env.변수이름으로 불러올 수 있다.
진행중인 프로젝트에도 미리 적용해두자.

profile
매일 TIL 중인 비전공자 프론트 개발자

0개의 댓글