우분투에서 NodeJS 시작하기

PHP를 쳐보면 부정적인 글이 주로 보여서 지속적으로 다뤄도 되는지 걱정된다. 그래서 이번에 다른 언어를 공부하면서 차이점과 미래에 대한 대비를 하고자 하였다. ‘Node.js 6.x 블루프린트’라는 책을 예전에 받았었기에 생각나서 펴봤는데 초보자를 위한 책이 아니었다. 책에도 그렇게 나와있었다. 설치부터 골치였다. NodeJS는 자체로 웹서버를 열 수도 있다. 알아두면 좋은 언어인 느낌은 확실하다.


우분투에서 설치

필자는 Debian 9를 사용하고 있다. 앞서 말했듯 설치부터 난항을 겪었다. 책에 나와있는, 인터넷에 있는 설명을 따라해도 제대로 설치되지 않았다. 옛날 자료라서 그런듯…

1
2
3
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt-get install -y nodejs

위 명령을 순차적으로 입력하고 아래 명령어를 입력하여 정상적으로 버전이 뜨면 성공이다.

1
2
node -v
npm -v


헬로우 월드!

1
console.log("Hello, World!");

main.js에 위와같이 작성한 후

1
node main.js

위 명령어를 입력하면 콘솔창에 Hello, World!가 뜨는 것을 볼 수 있다. 보다시피 자바스크립트와 똑같은 문법을 쓴다.


간단한 웹서버 열기

NodeJS에서 필요한 모듈을 불러올땐 require을 사용한다. http 모듈을 불러와 간단한 웹서버를 만들어 보자.

1
2
3
4
5
6
7
8
9
var http = require('http');

var server = http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type' : 'text/plain' });
  res.end('Hello World!\n');
});

server.listen(8080);
console.log("Server running at http://127.0.0.1:8080");

main.js에 위와같은 소스를 작성한 후

1
node main.js

위 명령어를 입력한후 localhost:8080으로 접속하면 ‘Hello World’가 떠있는 것을 살펴볼 수 있다. NodeJSPHP처럼 웹서버에 올려서 사용하는 서버 사이드 언어 같은 느낌은 아닌가보다.


프레임워크 사용

책에서 Express에 대한 내용을 엄청나게 다뤘는데 필자는 지식이 하나도 없었기에 시키는대로 했다. 그냥 NodeJS에서 가장 유명한 프레임워크 모듈인 듯 하다.

1
2
sudo npm install -g express
sudo npm isntall -g express-generator

위 명령어를 사용하여 express와 초기화 코드 생성 도구를 설치할 수 있다. -g는 컴퓨터 전역적으로(?) 설치한다고 설명되어 있다. 그리고 디렉터리를 하나 생성하여 그 안에 초기화 코드를 생성해 보자.

1
2
mkdir test; cd test
express --ejs --css sass --git

위 명령어를 입력하면 디렉터리와 파일들이 생성된다. 살펴보니 뭘랄까… Jekyll의 동적 버전 같은 느낌이었다. 그냥 첫 느낌이 그랬다…

1
2
npm install
npm start

위 명령어를 입력하고 브라우저에서 localhost:3000을 입력하면 Welcome Express가 보인다.


앞단에 엔진엑스 사용

You just may be hacked when some yet-unknown buffer overflow is discovered. Not that that couldn’t happen behind nginx, but somehow having a proxy in front makes me happy - Ryan Dahl -

Nginx를 앞단에 두면 Express가 사용하는 실제 포트를 숨겨 보안 이슈를 방지하고 Nginx의 우수한 기능을 활용할 수 있다. 필자는 단지 가상 호스팅이 적용되어 있는게 편해서 사용했다.

1
proxy_pass http://127.0.0.1:3000/;

Nginx 설정에서 위와같이 proxy_pass를 해주면 NodeJS 서버로 잘 넘어간다.

하… 일단 삽질한다는 생각으로 덤벼보자!

WRITTEN BY

배진오

웹 개발자 지망생
im@baejino.com

comments powered by Disqus