NodeJS 웹서버 띄우기
NodeJS는 npm을 통해 따로 외장모듈을 받지 않아도 사용 가능한 'http'라는 내장 모듈이 있습니다.
이 모듈을 사용하면 매우 간단히 웹서버를 만들 수 있습니다.


서버 객체 생성하기
http 모듈을 require를 통해 불러오고 http 모듈의 createServer() 메서드를 통해 서버 객체를 생성합니다.
서버객체를 생성한 후에 원하는 포트번호로 listen() 메서드를 호출하면 해당 포트로 통신할 수 있는 웹서버가 시작됩니다.
이때 두번째 인자로 넘긴 함수는 웹서버가 시작 되었을 때 호출될 콜백함수입니다.

서버가 시작되면 브라우저나 혹은 다른 웹 클라이언트를 통해 웹서버에 접근할 수 있습니다.
내 컴퓨터로 테스트 하는 경우에는 http://localhost:3000 과 같이 접근할 수 있을것입니다.
그러나 다음의 소스는 서버만 생성하고 웹클라이언트가 접근했을때에 대한 행동은 구현하지 않았기 때문에 브라우저를 통해 접근해도 아무런 반응이 없을 것입니다.
1
2
3
4
5
6
7
8
9
10
11
var http = require('http');
 
//서버 객체 생성
var server = http.createServer();
 
var port = 3000;
 
//서버에 3000번 포트를 열고 대기
server.listen(port, function() {
    console.log('웹 서버가 다음의 포트번호로 시작되었습니다. : %d', port);
});
cs

 




서버 종료
서버를 종료될 때에는 close 이벤트가 발생하며 server.close()를 통해 직접 종료 할 수 있습니다.
여기서는 on 메서드를 통해 직접 이벤트를 바인딩 해주었는데 close() 메서드에 콜백함수를 넘겨주어 서버 종료와 동시에 실행될 행동을 지정해 줄 수 있습니다.
close([function callback]) - 서버 종료
1
2
3
4
5
6
7
8
9
server.listen(port, function() {
    console.log('웹 서버가 시작되었습니다. : %d', port);
});
 
server.on('close'function(){
    console.log('서버 종료됨');
});
 
server.close();
cs

 


서버 장비에 여러개의 네트워크가 연결된 경우
만약 실무에서 운영중인 서버 장비(컴퓨터)인 경우 NIC(네트워크 카드)가 여러개 꼽혀 있을 수 있습니다.
이러한 경우 해당 서버 장비는 여러개의 ip를 가지게 됩니다.

이때에는 원하는 NIC에 할당된 IP로 서버를 작동시킬 수 있습니다.
1
2
3
4
5
6
7
8
9
var server = http.createServer();
 
 
var port = 3000;
var nic_ip = '192.168.1.71';
 
server.listen(port, nic_ip, 30000function() {
    console.log('192.168.1.71:3000 으로 서버 시작');
});
cs

 


서버 시작 에러
다음과 같이 EADDRNOTABAIL 에러가 발생하는 경우가 있습니다.
크게 두가지 원인이 있는데 첫번째로 서버의 연결 IP를 직접 지정해 주었을 때 해당 IP를 사용할 수 없는 경우입니다.
이때에는 윈도우의 경우 명령프롬프트의 ipconfig /all 명령을 통해 사용할 수 있는 IP가 제대로 설정되었는지 확인합니다.
또는 이미 사용중인 포트번호를 사용한 경우입니다.
이때에는 새로운 포트번호로 웹서버를 작동시키든지 먼저 해당 포트를 사용중인 프로세스틑 종료해 주어야 합니다.
프롬프트로 프로세스를 종료해주는 경우에 다음의 글을 참고 합니다. - [이클립스] eclipse 톰캣 포트 충돌 시 해결  
1
2
3
4
5
6
events.js:160
      throw er; // Unhandled 'error' event
      ^
Error: listen EADDRNOTAVAIL 192.168.1.72:3000
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
cs

 

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,