내 node.js 인스턴스가 개발 또는 프로덕션인지 확인
지금은 node.js 서버를 프로덕션 서버에 배포 할 때마다 데이터베이스 및 외부 API에 대한 다양한 연결을 위해 모든 IP / DNS / 사용자 이름 / 암호를 변경해야합니다.
이 프로세스는 성가신 데, 현재 실행중인 node.js 인스턴스가 cloud9ide에 있는지 아니면 실제로 내 생산 용 스마트 머신에 있는지 확인할 수있는 방법이 있습니까?
내 node.js 인스턴스가 실행중인 서버에서 (실행중인 코드에서) detemrine 할 수 있다면 prod 또는 dev에 값을 설정하는 조건을 추가합니다.
감사합니다
일반적으로 다음과 같이 프로덕션에서 노드 앱을 실행해야합니다.
NODE_ENV=production node app.js
Express, Socket.IO 및 기타 process.env.NODE_ENV
환경을 파악하는 데 사용 되는 응용 프로그램 .
개발 중에는이를 생략하고 node app.js
.
다음과 같이 코드에서 환경을 감지 할 수 있습니다.
var env = process.env.NODE_ENV || 'dev';
loadConfigFile(env + '.json', doStuff);
자원:
환경을 설정하는 가장 쉬운 방법은 애플리케이션에 명령 줄 인수를 전달하는 것입니다.
node ./server.js dev
스크립트에서이 인수를 처리하고 필요한 구성을 설정해야합니다.
var env = process.argv[2] || 'dev';
switch (env) {
case 'dev':
// Setup development config
break;
case 'prod':
// Setup production config
break;
}
또한 구성 프로세스를 좀 더 쉽게 만드는 모듈 을 만들었습니다 . 아마 도움이 될 것입니다.
실제로 다음과 같은 이유로 데이터베이스 연결 정보, 암호, 액세스 토큰 등과 같은 구성 값을 실제 애플리케이션 코드 내부에 저장하지 않는 것이 좋습니다.
이러한 값을 하드 코딩하면 나중에 변경하기가 어렵습니다. 이러한 값을 변경하려면 새 버전의 응용 프로그램을 릴리스해야합니다.
프로덕션 등급 구성 데이터와 암호를 코드에 저장하면 안되므로 이는 심각한 보안 위반입니다. 이 민감한 데이터를 유출하는 것은 매우 쉽습니다.
더 나은 접근 방식은이 데이터를 외부화하고 실행 중에 애플리케이션에 전달하는 것입니다. 이것은 일반적으로 환경 변수를 통해 수행됩니다. 서로 다른 환경간에 변경 가능해야하는 각 데이터 평화에 대해 고유 한 환경 변수를 정의하기 만하면됩니다.
예를 들면 : 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을 사용 하면 즉시 사용할 수 있습니다.
개발 환경에서는 매우 편리한 dotenv
module을 사용할 수 있기 때문에 더 간단 해집니다 . 그냥 만들 .env
프로젝트의 루트 디렉토리에 파일과 모든 변수를 추가 :
DB_HOST=1.2.3.4
DB_USER=someusername
DB_PASSWORD=somerandompassword
그러나 각 개발자가 개인 구성을 원할 것이므로 VCS에서 제외해야합니다. .env.dist
나중에 템플릿으로 사용할 수있는 기본 구성을 포함 하는 파일을 만들 수 있습니다 cp .env.dist .env
..
또한 CLI 인수와 NODE_ENV 변수를 모두 분석하여 환경을 자동으로 감지 할 수있는 재사용 가능한 모듈을 구현했습니다. 다음과 같이 Node.js 프로그램에 CLI 인수를 전달하여 환경을 쉽게 변경할 수 있으므로 개발 컴퓨터에서 유용 할 수 있습니다 $ node app.js --prod
. Gulp와 함께 사용하는 것도 좋습니다 : $ gulp build --prod
.
의 페이지에서 자세한 내용과 사용 사례를 detect-environment
참조하십시오 .
Npm 구성 모듈은 환경 기반 설정 및이를 기반으로 앱 실행에 매우 유용합니다. 아래 링크를 확인하십시오
https://www.npmjs.com/package/config
참조 URL : https://stackoverflow.com/questions/10694571/verify-if-my-node-js-instance-is-dev-or-production
'IT이야기' 카테고리의 다른 글
oauth2에 대한 다중 범위 값 (0) | 2021.03.30 |
---|---|
프로그래밍 방식으로 사용자를 로그인 / 인증하는 방법 (0) | 2021.03.30 |
MemoryStream-닫힌 스트림에 액세스 할 수 없습니다. (0) | 2021.03.29 |
실행 파일이 PowerShell의 경로에 있는지 테스트 (0) | 2021.03.29 |
rm -rf의 rf 의미 (0) | 2021.03.29 |