ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스(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/


    반응형

    댓글

Designed by Tistory.