-
5장 express 추가 구성, 다양한 환경 대응MeanStack (deprecated) 2016. 6. 8. 23:55
이번엔 express 를 제대로 활용하기 위한 외부모듈 추가와 다양한 환경에서 다르게 동작하게 하기 위한 환경을
구성을 해본다.
예를 들면 개발환경에서는 logger 를 보기 원하지만 상용환경에서는 logger 가 필요 하지 않고 응답데이터를
압축하여 조금 더 빠른 환경을 원할 수 있다.
이를 구분하기 위해서 process.env 속성을 사용한다. process.env는 전역 변수이며, 미리 정의된 환경변수에
대한 접근을 허용한다. 가장 일반적인 환경 변수는 NODE_ENV 이다.
사용하면서 알아보자.
이를 위해 추가로 설치 할 모듈은 morgan, compression, body-parser, method-override 이다.
package.json 이 있는 폴더로 가서 cmd 창을 열자.
npm install --save 명령으로 위 모듈들을 차례대로 설치하거나 package.json 파일의 dependencies 에 적고
한번에 설치 하여도 된다.
각 모듈에 대해서 설명하자면
morgan : 로거 미들웨어 제공
compression : 응답 압축 지원
body-parser : 요청 데이터의 처리
method-override : DELETE, PUT 등과 같이 HTTP 동사 지원 기능
이제 설치 했으니 config 의 express-config.js 파일을 수정해야 한다.
var express = require('express'), morgan = require('morgan'), compress = require('compression'), bodyParser = require('body-parser'), methodOverride = require('method-override') ; module.exports = function() { var app = express(); if(process.env.NODE_ENV === 'development') { app.use(morgan('dev')); } else if (process.env.NODE_ENV === 'production') { app.use(compress()); } app.use(bodyParser.urlencoded({ extended : true })); app.use(bodyParser.json()); app.use(methodOverride()); require('../app/routes/index.server.routes.js')(app); return app; }
추가된 코드를 살펴보자.
먼저 위에서 설치 했던 4가지 모듈을 require 시켰다.
그리고 process.env.NODE_ENV 에 따라 morgan 을 사용 할 지 compress 를 사용할지를 정의하고 있다.
urlencoded 설정에 extended : true 로 설정을 하고 bodyParser.json 과 methodOverride 를 사용하도록
설정하였다.
이제는 process.env.NODE_ENV 에 값을 주기 위해 StartApp.js 의 코드를 수정하자.
process.env.NODE_ENV = process.env.NODE_ENV || 'development'; var express = require('./config/express_config'); var app = express(); app.listen(3000); module.exports = app; console.log('Server running at localhost');
StartApp.js 의 윗 부분에 process.env.NODE_ENV 횐경변수를 설정하는 코드를 추가 하였다.
이렇게 해놓으면 만약 NODE_ENV 환경변수가 설정되어 있지 않다면 기본적으로 development 로 설정되는 것을
기억하자. 이제 저장을 하고 실행 해보자.
서버를 실행하도 http://localhost:3000 으로 접속 한 뒤 콘솔창을 보면 위 스크린샷과 같이 log 정보가 콘솔창에
나타날 것 이다. 만약 StartApp.js 에서 development 를 다른 이름으로 바꾼다면 위에 설정 해 놓았듯이
logger 는 작동하지 않을 것 이다.
이를 활용하여 추후 다양한 환경에 다양한 응답방식을 보내도록 구현 할 수 있을 것 이다.
NODE_ENV 환경변수를 코드에서가 아닌 직접 변경하기 위해서는 cmd 창에서 set NODE_ENV = development
라는 명령을 실행하면 바뀔 것 이다.
이런 환경파일 역시 추후 다양한 환경에 다양한 응답을 하는 application 을 만들었을 때 유지보수 가 쉽도록
미리 환경구성 집합을 만들어 놓자.
먼저 config 폴더로 가서 env 폴더를 만들고 내부에 development.js 파일을 만들고 코드를 적자.
module.exports = { // 여기에 환경구성옵션 을 넣을 것 이다. }
단순히 exports 시키는 코드만 있지만 나중에 채울 것 이기에 지금은 비워 놓자.
그리고 config 폴더로 가서 config.js 파일을 만들고 코드를 적자.
module.exports = require('./env/' + process.env.NODE_ENV + '.js');
이제 config 파일은 추후 env 파일의 다양한 환경구성파일을 읽어서 다양한 환경을 제공할 것 이다.
여기까지 이제 어느정도 준비가 되었다.
다음 장에서는 ejs 를 이용한 뷰 시스템을 구성하고 사용자에게 원하는 뷰를 제공하도록 만든다.
(끝)
(현재 폴더 구조)
'MeanStack (deprecated)' 카테고리의 다른 글
7장 express 를 활용한 session 처리 (2) 2016.06.12 6장 express 정적파일 컨트롤 + 뷰시스템 (ejs) (0) 2016.06.10 4장 express 를 활용한 Routing 처리 (0) 2016.06.08 3장 - express 를 활용한 Node.js 시작하기 (0) 2016.06.07 2장 - 환경구성 ( Node.js 개발 Tool , 모듈 관리 Npm , Package.json ) (0) 2016.06.06