2015년 6월 4일 목요일

Mac, Node.js 학습 7일차] 서버 실행 모듈

* 전역 모듈 - 서버 실행 모듈 
  - supervisor : js 파일의 변경을 자동으로 인식해서 실행중인 서비스를 종료 후 다시 실행한다.
  - forever : exception으로 서비스가 중단되는 것을 다시 실행한다.
  - express : http 모듈을 쉽게 사용하도록 지원하는 모듈 

1. supervisor 모듈
js 파일의 변경을 자동으로 인식해서 실행중인 서비스를 종료 후 다시 실행한다.

- 모듈 설치 방법

baesunghan:~/Documents/workspace/nodejs$sudo npm install -g supervisor
Password:
/usr/local/bin/node-supervisor -> /usr/local/lib/node_modules/supervisor/lib/cli-wrapper.js
/usr/local/bin/supervisor -> /usr/local/lib/node_modules/supervisor/lib/cli-wrapper.js
supervisor@0.6.0 /usr/local/lib/node_modules/supervisor
baesunghan:~/Documents/workspace/nodejs$

- 사용 방법

baesunghan:~/Documents/workspace/nodejs$supervisor test.supervisor.js

Running node-supervisor with
  program 'test.supervisor.js'
  --watch '.'
  --extensions 'node,js'
  --exec 'node'

Starting child process with 'node test.supervisor.js'
Watching directory '/Users/baesunghan/Documents/workspace/nodejs' for changes.
Server running at http://127.0.0.1:52273/

   ==> test.supervisor.js 가 변경된 것을 감지하여 자동으로 재 시작한다.
crashing child
Starting child process with 'node test.supervisor.js'
Server running at http://127.0.0.1:52273/


* 주의사항 
  서비스의 오류로 인해 서비스가 다운되도 계속 다시 수행하므로 주의해야 한다.

2. forever  모듈
Exception으로 서비스가 중지되어도 다시 시작하도록 하는 예외처리 모듈

- 모듈 설치

baesunghan:~/Documents/workspace/nodejs/exam_mysql$sudo npm instal -g forever
Password:
/usr/local/bin/forever -> /usr/local/lib/node_modules/forever/bin/forever

- 사용 방법

baesunghan:~/Documents/workspace/nodejs/exam_mysql$forever stat app.js
baesunghan:~/Documents/workspace/nodejs/exam_mysql$forever listinfo:    No forever processes running
baesunghan:~/Documents/workspace/nodejs/exam_mysql$
baesunghan:~/Documents/workspace/nodejs/exam_mysql$forever stop 0

3. Express 모듈
http 모듈을 쉽게 사용하도록 지원하는 모듈 
- Express 모듈의 미들웨어
  • logger : 로그 정보 출력
  • csrf : CSRF 보안 수행
  • basicAuth : 기본 인증 수행
  • bodyParser : POST 요청 매개변수 추출
  • cookieParser : Cookie 분해
  • session : 세션 처리
  • methodOverride : 다양한 요청 방식 수행
  • responseTime : 응답시간 계산
  • router : 페이지 라우트 수행
  • staticCache : static 미들웨어를 위한 메모리 캐시 
  • static : 특정 폴더를 서버의 루트 폴더로 올려서 path 지정이 간편하게 함.
  • directory : 서버의 디렉토리 구조를 보여줌
  • vhost : 가상 호스트 설정
  • favicon : 파비콘 생성
  • limit : POST  요청 데이터 제한
  • errorHandler : 예외처리 수행

위와 같이 다양한 미들웨어가 있지만, 많이 사용하게 되는 것은 router, static, bodyParser 이 있다.

<사용 예제>
- app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);
app.use('/join', join);


- index.js
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;




이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요.

댓글 없음:

댓글 쓰기