개발

리눅스(Centos6.x) 서버에 node.js 설치하기

에드몽단테스 2017. 9. 12. 20:10

node.js 초기에는 node.js 하나만 다운로드 받으면 됐지만, 지금은 여러가지 모듈과 함께 기능들을 제공하고 있어서 node.js를 다운로드 받을 수 있는 별도의 모듈(Node Package Manager)을 통해 설치한다.


1.소스 컴파일

  1) source 다운로드

    wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz

  2) 압축 해제 및 폴더이동

    tar zxvf node-v*.tar.gz

    cd node-v*

  3) configure 및 컴파일

    ./configure

    make

  4) 설치

    make install


2.바이너리 설치

  yum install npm


바이너리로 npm을 설치할 경우 EPEL repository를 설치해야 한다.

EPEL (Extra Packages for Enterprise Linux) 은 Fedora Project 에서 제공되는 저장소로 각종 패키지의 최신 버전을 제공하는 community 기반의 저장소이다. 

RHEL 의 패키지 정책은 보수적이고 안정성이 최우선이라 패키지 업데이트가 잘 되지 않는다.

즉, epel 로 npm을 설치할 수 있으나 그 버전이 매우 낮다.


2-1 epel 설치방법


rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm


서론이 길어지만 위의 이유에서 컴파일 또는 바이너리방식이 아닌 node 사이트에서 직접 파일을 받기로 했다.

(epel 설치후 npm을 설치하면 그 버전이 매우 낮다)


nodejs 는 https://nodejs.org/en/download/ 에서 다운로드 받을 수 있다.

각 OS별로 제공하며 2017.09 현재 최신버전은 6.11.3 버전이다.


파일다운로드

  wget https://nodejs.org/dist/v6.11.3/node-v6.11.3-linux-x64.tar.xz


압축해제

  tar xvf node-v6.11.3-linux-x64.tar.xz


버전확인

  node -v


필요한 경우 별도의 모듈을 다운로드 받아야 하는 경우가 있다.

예를 들어 mqtt 경우 아래와 같이 설치한다.


npm install mqtt --save


위와 같이 실행하면 현재 경로에 node_modules/mqtt/에 파일들이 생긴다.

기존에 node를 설치했다면 기존 구조와 비슷하게 맞추기 위해 node 설치 디렉토리 안의 lib 로 이동 후 npm install mqtt --save 를 실행한다.

그러면 다음과 같이 이쁜 구조로 mqtt 가 설치된다.

{node}/lib/node_modules/npm

{node}/lib/node_modules/mqtt


다른 모듈 설치시에도 {node}/lib 안에서 설치를 한다.


예) 

cd /usr/local/node-v6.11.3-linux-x64/lib

npm install request --save


{node}/lib/node_modules/npm

{node}/lib/node_modules/mqtt

{node}/lib/node_modules/request


모듈을 설치했으면 이 모듈을 작성하려는 코드에 적용한다.


test.js (샘플)

==================

var mqtt = require('mqtt');

var request = require('request');

var client = mqtt.connect('mqtt://test.mosquitto.org')

var item = [];


client.on('connect', function() {

  client.subscribe('beacons')

})

.

.

.


실행시 모듈을 못찾는 경우가 있다.


[root@dev1 bin]# node test


module.js:340

    throw err;

          ^

Error: Cannot find module 'mqtt'

    at Function.Module._resolveFilename (module.js:338:15)

    at Function.Module._load (module.js:280:25)

    at Module.require (module.js:364:17)

    at require (module.js:380:17)

    at Object.<anonymous> (/usr/local/node-v6.11.3-linux-x64/bin/test.js:1:74)

    at Module._compile (module.js:456:26)

    at Object.Module._extensions..js (module.js:474:10)

    at Module.load (module.js:356:32)

    at Function.Module._load (module.js:312:12)

    at Function.Module.runMain (module.js:497:10)



이런 경우에는 모듈의 경로를 상대적으로 설정해주면 된다.


var mqtt = require('../lib/node_modules/mqtt');

var request = require('../lib/node_modules/request');

var client = mqtt.connect('mqtt://test.mosquitto.org')

var item = [];


client.on('connect', function() {

  client.subscribe('beacons')

})


끝~


참고

  https://nodejs.org/en/

  https://www.npmjs.com/package/mqtt

  https://blog.risingstack.com/getting-started-with-nodejs-and-mqtt/


반응형