Page 17 -
P. 17
이 책에서 80번 포트를 사용하지 않는 이유는 충돌을 방지하기 위해서입니다. 보통 컴퓨터들은 80번 포트를 이미 다
른 서비스가 사용하고 있을 확률이 큽니다. 보통 포트 하나에 서비스를 하나만 사용할 수 있으므로 다른 서비스가 사
용하고 있는 포트를 사용하려고 하면 에러가 발생합니다. 따라서 예제를 실행할 때는 다른 포트 번호들을 사용하고,
실제로 배포할 때는 80번 또는 443번 포트를 사용합니다.
한 가지 더 알아둘 점이 있습니다. 리눅스와 macOS에서는 1024번 이하의 포트에 연결할 때 관리자 권한이 필요합
니다. 따라서 명령어 앞에 sudo를 붙여주어야 합니다. 예를 들면 node server1 대신 sudo node server1을 입력
해야 합니다. 예제에서는 8080번 포트를 사용하므로 sudo를 붙일 필요는 없습니다.
Warning 포트 충돌
다른 서비스가 사용하고 있는 포트를 사용할 경우 Error: listen EADDRINUSE :::포트 번호 같은 에러가 발생합니다.
이런 경우 그 서비스를 종료하거나, 노드의 포트를 다른 번호로 바꾸면 됩니다.
드디어 웹 서버가 만들어졌습니다! 페이지를 몇 개 더 만들어봅시다. 페이지는 주소로 구별해줍
니다. 그 전에 HTML 파일을 만들어두는 것이 좋을 것 같습니다. res.write 메서드로 한 줄씩
HTML 코드를 적는 것은 너무 비효율적입니다. 다행히 HTML 파일을 읽어서 전송하는 방법이
있습니다. 다음 예제를 통해 배워보겠습니다.
server2.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Node.js 웹 서버//title>
//head>
<body>
<h1>Node.js 웹 서버//h1>
<p>만들 준비되셨나요?//p>
//body>
//html>
server2.js
const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {
fs.readFile('./server2.html', (err, data) => {
136
node_06.indd 136 2018-07-20 오전 10:26:43