NodeJS의 process.env란 무엇인가?

March 15, 2017

process.env

Express.js의 config 파일에 다음과 같은 것이 있다.

let all = {
  env: process.env.NODE_ENV,
  port: process.env.PORT || 9090,
  ip: process.env.IP || '0.0.0.0',
  ...
  };

process.env.NODE_ENV, 이 환경변수를 통해서 Express.js 앱을 developmentproduction으로 띄울 수가 있다. 두 모드에 따라서 config를 변경하는 것도 가능하다. 나는 여태 process.env.NODE_ENV가 Express.js를 동작시킬 때 함께 설정해줘야 하는 것인 줄 알았다. 예를 들면 다음과 같이 말이다.

$ NODE_ENV=prodcution forever start app/app.js

env

이는 사실 매우 불편한 방법인데 환경변수를 일일이 타이핑하여 앱을 구동시키는 것이 그렇게 좋은 아이디어인 것 같지 않기 때문이었다. 결론적으로 말하면 이러라고 만든 process.env가 아니다. 사실 process.env는 NodeJS 앱이 동작할 리눅스/유닉스 시스템의 환경변수를 이용하는 것이다. 터미널에서 env 명령어를 타이핑해보면 현재 컴퓨터에 설정된 환경변수들이 주욱 나열되는 것을 볼 수 있다.

$ env

환경변수의 생성

$ env NAME=VALUE

환경변수의 삭제

$ env -u NAME

즉 NodeJS에서 process.env는 서버의 환경변수를 뜻하며 서버의 환경변수가 미리 설정되어 있다면 위와 같이 타이핑하여 앱을 구동시키지 않아도 된다는 뜻이다. 만약 프로덕션 서버라면 미리 NODE_ENV=production 이라는 환경변수를 만들어 놓고 동작시키면 된다는 뜻이다.

$ env NODE_EMV=production

응용

AWS의 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY도 환경변수로 설정해 놓고 사용하면 번거로움이 줄어든다.

$ env AWS_ACCESS_KEY_ID=....
$ env AWS_SECRET_ACCESS_KEY=...

소스에서는 다음과 같이 활용할 수 있다.

const AWS = {
  'key':    process.env.AWS_ACCESS_KEY_ID,
  'secret': process.env.AWS_SECRET_ACCESS_KEY,
  'bucket': 'dev.example.com',
  'region': 'eu-west-1'
};

Comments

comments powered by Disqus