오늘도 삽질중

리눅스 심화 - 환경변수 본문

카테고리 없음

리눅스 심화 - 환경변수

해빋 2021. 11. 8. 13:59

API key와 같이 공개할 수 없는 정보가 코드에 포함될 경우, 네트워크를 통해 API key가 공개될 수 있다.

이런 일을 방지하기 위해서는, API key를 PC에 저장해두고 사용해야한다. JavaScript에서 변수에 문자열을 할당하는 것처럼, 

API key를 PC에서 사용하는 변수에 할당하고 사용할 수 있다.

 

JavaScript에서 변수는 스코프에 따라 전역변수와 지역변수로 나뉜다. 그러나 파일 A에서 전역변수로 선언하더라도, 다른 파일 B에서 파일 A의 전역변수에 접근할 수 없다. 그러나 파일 A의 전역변수를 export한다면, 파일 B에서 파일 A의 지역변수에 접근할 수 있다.

 

Linux 기반의 운영체제의 PC에는 시스템 자체에 전역변수를 설정할 수 있다. 그리고 시스템에 설정한 전역변수를 환경변수라고 한다.

export를 이용해 환경변수를 설정할 수 있다. 

 

이번 콘텐츠에서는 PC에 환경변수를 설정하는 방법과, JavaScript코드에서 환경변수를 사용하는 법을 안내한다.

 

<목차>

  • PC에 저장하는 환경변수가 무엇인지 이해하고, 사용할 수 있다.
    • PC에 저장된 환경변수를 확인할 수 있다. export
    • PC에 저장된 환경변수를 불러올 수 있다. dotenv
    • Node.js에서 환경변수를 영구적용할 수 있다. .env

 

👊 환경변수 사용법


🎟 export : 환경변수 확인하기 && 환경변수 임시 적용

Linux 운영체제에는 이미 많은 환경변수가 설정되었다. 터미널에 명령어 export를 입력해 기록된 환경변수를 확인할 수 있다.

export

 

👉  명령어 export를 이용하면, 새로운 환경변수를 추가할 수 있다. ex)

export urclass="tomato is delicious"

(새로운 환경변수 urclass="tomato is delicious"를 설정한다. 등호표시 앞 뒤엔 공백이 없어야함)

👉 명령어 echo와 함께 환경변수를 입력하면 환경변수의 값을 확인할 수 있다.

👉 환경변수의 앞에는 달러사인($)를 입력하여 변수라는 뜻을 터미널에 전달한다.

echo $urclass

echo 명령어와 달러사인을 이용해 설정한 환경변수를 조회할 수 있다.

🎟 dotenv : 자바스크립트에서 환경변수 사용하기

npm 모듈 dotenv를 사용하면 자바스크립트에서 환경변수를 사용할 수 있다. npm 모듈을 설치하고 사용하기 위해서, 새로운 폴더를 만들고 npm init을 입력한다. 그리고 npm i dotenv를 입력해 모듈을 설치한다. 이때 생성한 폴더는 설치할 모듈과 이름이 같아서는 안된다. 

// npm 모듈 설치
mkdir environment_variable
cd environment_variable
npm init # 엔터 키를 여러번 입력해 init을 마칩니다.
npm i dotenv # dotenv 모듈을 설치합니다.

 

❗️ 참고- 나의 경우 이런 오류가 뜸  (Sorry, name can only contain URL-friendly characters.)

스택오버플로우에서 답을 찾을 수 있었는데, 답은 간단했다. 그냥 URL-type 형식으로 파일을 만들어주면 됐다.

(나의 경우 파일이름을 environment_variable 에서 environment-variable으로 바꿔주었다.

파일만들고 npm init해주고 엔터를 난사하다보면(npm init을 만들어준듯하다)

Is this OK? 라고 떴고 엔터누른후 npm i dotenv를 입력해준다.

npm 모듈 dotenv를 설치한다

 

완성👌

 

이제 설치한 dotenv 를 이용해 환경변수에 접근할 수 있다. 새로운 파일 index.js를 생성하고, process.env를 출력한다.

Node.js의 내장 객체 process.env를 이용하면, 명령어 export로 확인한 내용과 동일한 내용을 객체로 출력한다.

 

  • process.env는 Node.js 환경에서 조회할 수 있다.
  • dotenv는 이어지는 콘텐츠 .env 파일을 환경변수로 사용할 수 있게 돕는다.

비교(process.env vs export)

참고로 process.env를 보면 urclass 환경변수가 들어있는것을 볼 수 있다. 그러나 오른쪽 export에는 없음. 왜일까? 

🎟 .env : Node.js에서 환경변수 영구 적용

명령어 export로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용이 가능하다

환경변수를 Linux 운영체제에 저장하는 방법은 여러 가지가 있지만, Node.js에서는 파일 .env를 만들어 저장하는 방법을 사용한다.

 

먼저 .env파일을 생성하고, 사용하고자 하는 환경변수를 입력한 뒤 저장한다.

.env 파일을 생성하고, 환경변수로 사용할 myname에 "soyoung!!"를 할당함

모듈 dotenv를 이용하면, 파일 .env에 저장한 환경변수를 조회할 수있다. index.js를 다음과 같이 수정하고 저장한다.

const dotenv = require("dotenv")
dotenv.config()
console.log(process.env.myname)

// index.js에서 dotenv.config메소드를 이용해 .env를 process.env에 적용할 수 있다.

 

환경변수를 이용해 API key, DB password와 같이 민감한 정보를 저장하고 관리할 수 있다. 그 뿐만 아니라 서로 다른 PC 또는 여러 .env 파일에서, 같은 변수 이름에 다른 값을 할당할 수 있다.

 

실제 제품(서비스)를 개발하는 과정에서 개발환경(local 또는 development 등)과 테스트 서버의 환경(test), 그리고 실제 제품을 제공하는 환경(production)이 있다. 예를 들어 구글 API를 이용해 웹 어플리케이션을 만드는 경우, 개발 환경에서는 개발자 개인의 API키를 이용할 수 있다. 그러나 제품을 서비스할 때에 개인 API키를 사용하면, 일일 요청량을 초과하는 경우 제품이 정상적인 동작을 할 수 없다. 이런 경우를 방지하기 위해 실제 제품에서는 기업용 API키를 사용한다. 이처럼 개발 환경과 제품을 제공하는 환경에서 사용하는 API키가 다른경우, 환경 변수를 이용해 환경을 구분하여 코드를 작성할 수 있다.

 

데이터 베이스도 마찬가지로 개발, 테스트, 제품 환경으로 구분할 수 있다. 다음 그림은 각기 다른 환경에, 같은 변수 이름을 사용하여 데이터 베이스를 구분한 예시이다.

 

 

동영상과 함께 보면 이해가 더 잘간다

Comments