티스토리 뷰
.env 파일에서 민감한 환경변수들 관리하기
선택사항이긴 하지만 실제 서버배포시 필수라고 볼 수 있는 .env 파일에 대해 알아봅시다.
여태까지 작성한 server 코드를 잘 보시면 이런 코드가 존재합니다.
var db;
MongoClient.connect('mongodb+srv://codingapple1:어쩌구@저쩌구', 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접속 문자열이 바뀐다든지
- 아니면 내가 만든 코드를 팀원과 share 해야하는데 내 아이디 비번이 적혀있으면 좀 그렇잖습니까
이런 환경에 따라 가변적인 변수 데이터들을 보통 환경변수라고 부르는데
(멋있는 영어로 environment variable 이라고 합니다.)
그래서 개발자들은 미래를 생각하는 코딩을 하기 위해 환경변수를 한곳에 모아서 관리합니다.
.env파일이라는 곳입니다.
.env파일에 모든 중요 환경변수들을 다 쑤셔박아넣은 뒤에,
server.js에 가서 ".env파일에 있는 포트숫자를 여기에 넣어주세요~" 이런 식으로 코딩합니다.
이 경우 server.js 파일이 털릴 경우에도 중요한 정보들은 env 파일에 있기 때문에 조그만한 보안상 이점도 있긴 있습니다.
구체적으로 어떻게 사용하는지 튜토리얼 들어갑니다.
1. 환경변수 사용을 위한 라이브러리를 설치합니다.
오늘도 어김없이 라이브러리 설치입니다.
터미널을 켜시고 npm install dotenv 라고 입력하셔서 설치하시면 됩니다.
2. 환경변수가 있는 server.js에 방금 설치한 라이브러리를 등록합니다.
(server.js)
require('dotenv').config()
server.js 상단에 (const 모여있는 곳에) 이렇게 적어주시면 됩니다.
이제 하단에서 환경변수를 자유롭게 사용가능합니다.

3. server.js와 같은 경로에 .env 파일을 하나 만들어줍니다.
그리고 내부에 여러분이 나중에 변경이 될 것 같은 환경변수들을 전부 다 적고 저장해주시면 됩니다.
(.env 파일)
PORT=8080
DB_URL="mongodb+srv://codingapple1@저쩌구"
이런 식입니다.
형식은 var 문법으로 숫자, 문자 변수만드는거랑 똑같이 왼쪽엔 변수명, 오른쪽은 값을 넣는다고 보시면 됩니다.
다만 변수 이름들은 보통 대문자로 표기합니다.
여기 파일에 모든 환경변수를 모아놓으면 나중에 이 파일만 수정하면 되니까 관리도 편해지고,
나중에 작업환경이 바뀌거나 클라우드에 올릴 때도 요것만 변경해주면 쉽게 환경셋팅이 가능해집니다.
4. 그럼 환경변수들을 server.js에다가 불러오도록 합시다.
server.js에서 env파일의 변수들을 불러오실 때는 process.env.변수이름 이렇게 불러올 수 있습니다.
(기존 server.js 코드)
var db;
MongoClient.connect('mongodb+srv://codingapple1:어쩌구@저쩌구', 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')
})
})
위는 기존 코드, 밑은 env파일 내의 환경변수를 적용한 코드입니다.
밑에 처럼 코드를 짜시면 이제 나중에 환경변수 변경이 필요할 때
직접 server.js 코드를 뒤져서 바꾸는게 아니라 .env 파일만 손보면 되니 약간 더 편리하겠죠?
여러분이 나중에 AWS, Google, Naver 클라우드 등을 이용해서 서버를 발행할 때
env파일을 똑같이 이용할 수 있습니다.
구글 클라우드 서비스에 올릴 경우 env 파일을 따로 만드는게 아니라 app.yaml 파일 내에 환경변수들을 포함해야하는데
https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#environment_variables
이런 곳을 참고해서 똑같이 환경변수를 제작하면 되겠습니다.
다만 변수만드는 문법에 등호 대신 콜론 (:)을 씁니다.
그러니 어서 .env 파일을 활용해보시길 바랍니다.
.env 파일 만드실 때 파일명에 마침표 있는거 잊지 마시고요.
'Node.js' 카테고리의 다른 글
Node.js + MongoDB 검색2(MongoDB index만들기) (0) | 2023.05.22 |
---|---|
Node.js + MongoDB 검색(Query형식 GET로 처리하기) (0) | 2023.05.22 |
Node.js + MongoDB 로그인확인후 마이페이지(passport.deserializeUser) (0) | 2023.05.22 |
Node.js + MongoDB 로그인 성공시 세션만들어주기(passport.serializeUser) (2) | 2023.05.22 |
Node.js + MongoDB 로그인페이지 아디 비번확인(passport passport-local express-session[lib]) (0) | 2023.05.22 |