을, 나는 데이터베이스 연결 정보, 암호 등의 설정 값을 저장하는 것이 좋습니다 않을 것이다, 액세스 토큰 및 다음과 같은 이유로 실제 응용 프로그램 코드의 내부에서 액세스 할 수 있습니다.
이러한 값을 하드 코딩하면 나중에 변경할 수 없습니다. 이러한 값을 변경하려면 응용 프로그램의 새 버전을 릴리스해야합니다.
프로덕션 수준의 구성 데이터와 암호를 코드에 저장해서는 안되기 때문에 심각한 보안 위반 사항입니다. 이 민감한 데이터를 유출하는 것은 매우 쉽습니다.
더 나은 방법은이 데이터를 외부화하여 실행 중에 응용 프로그램에 전달하는 것입니다. 이는 일반적으로 환경 변수를 통해 수행됩니다. 서로 다른 환경간에 변경이 가능한 각 데이터의 평화에 대해 고유 한 환경 변수를 정의하면됩니다.
예 : DB_HOST
, DB_USER
, DB_PASSWORD
.
$ NODE_ENV=production DB_HOST=1.2.3.4 DB_USER=someusername DB_PASSWORD=somerandompassword /bin/node app.js
사실,이 값이 암호화 코드베이스에 추가하고 배포하는 동안 암호를 해독 할 수있다 : 그럼 당신은 생산에 응용 프로그램 당신에게 이런 식으로 그 값을 전달할 수 있습니다. 그러나 해독 키가 배포 시스템에 안전하게 저장되거나 릴리스 엔지니어가 대화식으로 제공하는지 확인하십시오. Shippable allows to do this 상자에서 꺼내십시오.
매우 편리한 dotenv
module을 사용할 수 있기 때문에 개발 환경에서 더 간단 해집니다. 그냥 프로젝트의 루트 디렉토리에 .env
파일을 생성하고,이 파일에 모든 변수를 추가
DB_HOST=1.2.3.4
DB_USER=someusername
DB_PASSWORD=somerandompassword
을하지만, 각 개발자는 아마 개인 구성을 갖고 싶어 때문에, 당신 VCS에서 제외해야합니다. .env.dist
파일을 만들어 기본 구성을 포함 할 수 있으며 나중에 템플릿으로 사용할 수 있습니다 : cp .env.dist .env
.
또한 I 자동 CLI 인수 및 NODE_ENV 변수 모두를 분석하여 환경을 검출 할 수있는 재사용 가능한 모듈을 구현했다. 이는 개발자 머신에서 유용 할 수 있습니다. CLI 인수를 $ node app.js --prod
과 같은 Node.js 프로그램에 전달하여 환경을 쉽게 변경할 수 있기 때문입니다. Gulp와 함께 사용하는 것이 좋습니다 : $ gulp build --prod
.
detect-environment
's page에 대한 자세한 내용 및 사용 사례를 참조하십시오.
node.js 앱이 HTTP 서버입니까? –
예. 또한 mongodb에 연결되어 있습니다. – guiomie