Linux 심화 -2 : 환경변수

Jinhee 'Zeenii' Lee ·2021년 10월 7일
0

TIL

목록 보기
5/9

환경변수

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

이런 일을 방지하기 위해서는, API key를 PC에 저장해두고 사용해야 한다.

JavaScript에서 변수에 문자열을 할당하는 것처럼, API key를 PC에서 사용하는 변수에 할당하고 사용할 수 있다.

JavaScript에서 변수는 스코프에 따라 전역변수와 지역변수로 나뉘는데,
파일 A에서 전역변수로 선언하더라도, 다른 파일 B에서 파일 A의 전역변수에 접근할 수 없다.

그러나 파일 A의 전역변수를 export 한다면, 파일 B에서 파일 A의 전역변수에 접근할 수 있다.

Linux 기반의 운영체제의 PC에는 시스템 자체에 전역변수를 설정할 수 있다.

그리고 시스템에 설정한 전역변수를 환경변수라고 하고, export 를 이용해 환경변수를 설정할 수 있다.

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

Linux 운영체제에는 이미 많은 환경변수가 설정되어 있고, 터미널CLI에 아래의 명령어를 입력한다.

export

설정된 환경변수를 확인할 수 있다.

export 명령어를 통해 새로운 환경변수를 추가할 수 있다.

export urclass="is good"

터미널에 위와같이 입력후 

echo $urclass 입력하면 

is good

출력

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

npm 모듈 dotenv를 사용하면, 자바스크립트에서 환경변수를 사용할 수 있다.

npm 모듈을 설치하고 사용하기 위해서 새로운 폴더를 만들고 npm init 을 입력한다.

입력 후 npm i dotenv를 입력해서 모듈을 설치한다.

생성된 폴더는 설치할 모듈과 이름이 같아서는 안된다.

mkdir enviroment_variable
cd  enviroment_variable
npm init
npm i dotenv

설치된 dotenv를 이용해 환경변수에 접근할 수 있다.

새로운 파일 index.js를 만들고 process.env를 출력한다.

Node.js의 내장 객체 precess.env를 이용하면

명령어 export로 확인한 내용과 동일한 내용을 객체로 출력한다.

# index.js파일을 만든다. 

nano index.js

# nano로 생성된 index.js에 출력할 내용을 입력하는 창이 나온다. 
# 창이 나오면 console.log(process.env)를 입력한다. 

#입력 후 cat index.js를 입력하면 

cat index.js

console.log(precess.env) #출력완료

# node index.js를 입력하면 환경변수를 객체로 받아올수 있다. 

node index.js

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

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

환경변수를 Linux 운영체제에 저장하는 방법은 여러가지 있지만

Node.js에서는 파일 .env를 만들어 저장하는 방법을 사용한다.

# .env파일을 만든다. 

nano .env

# env에 myname = kimcoding을 작성한다. 
# cat .env를 작성한다. 

cat .env

myname=kimcoding #출력

모듈 dotenv를 이용하면, 파일 .env에 저장한 환경변수를 조회할 수 있다.

index.js를 아래와 같이 수정하고, 저장해보자.

const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.myname);
// nano index.js를 입력하면 수정할수 있는 화면으로 나온다. 

nano index.js

/* 
1. 위에 작성된 코드를 입력한다.

2. 입력된 코드 저장하고 cat index.js를 입력한다. 
 */

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

/*
node index.js를 입력하면 
.env로 입력된 myname에 할당된 값이 나온다.
*/

node index.js 

kimcoding //출력

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

실제 제품(서비스)을 개발하는 과정에는 개발 환경(local 또는 development 등)과 테스트 서버의 환경(test), 그리고 실제 제품을 제공하는 환경(production)이 있다.

profile
드럼으로 재즈 음악하고 (Jazz drummer/ musician) 코딩공부해서 개발자가 되고 싶고(SE engineer) 바이크(Motorcycle)를 좋아해서 할리오너(harley-davidson Owner)가 되고싶은자

0개의 댓글