본문 바로가기

Programming/IoT_Embedded

라즈베리파이 개발환경 꾸미기 #5. 라즈베리파이에 NodeJs 설치하기

이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다.

  1. 라즈비안 OS 설치하기
  2. 키보드 모니터 없이 라즈베리파이 Login 하기
  3. Wifi 설정 / 기본 설정하기
  4. 파이썬 + Eclipse로 라즈베리파이 개발하기
  5. >> 라즈베리파이에 NodeJs 설치하기 <<
  6. NodeJs + Eclipse로 라즈베리파이 개발하기
  7. C/C++ Cross Compiler(Tool Chain) 설치하기
  8. Eclipse + C/C++ 로 라즈베리파이 개발하기
Updated 2018.06.29 : 
이 포스트는 오래된 내용으로 지금 참고하기에는 적절치 않습니다. 아래 URL의 새로운 포스트를 참고하시기 바랍니다.

NodeJs는 Javascript 언어를 브라우저 없이도 동작할 수 있게 하는 플랫폼입니다.
보통 웹 개발에 있어서 서버 부분 그러니까 Back-End(백엔드) 부분에 활용하는데,
그 이유로는 웹 클라이언트 그러니까 Front-End(프론트 엔드) 부분에서 
활발하게 사용할 수 밖에 없는 Javascript 언어를 Back-End에서도 사용할 수 있으니
서로 다른 언어로 두 영역을 개발할때 보다 시너지 효과가 클 수 밖에 없기 때문입니다.


그 뿐 만이 아니라 npm을 이용해서 다양한 모듈을 추가 할 수 있는데, 
그 종류가 어마어마하게 많고 활발하게 성장하고 있습니다.

여기에 웹과 모바일 그리고 임베디드를 아우르는 IoT 라는 새로운 시장이 나타나면서
NodeJs는 다양한 IoT 플랫폼에 적용되기 시작합니다.
라즈베리파이는 물론이고, 인텔에서 IoT시장을 겨냥해서 만든 에디슨과
오픈소스 하드웨어로 라즈베리파이와 쌍벽을 이루는 비글본 블랙도 NodeJs를 기본 탑재하고 있을 뿐만 아니라
에디슨과 비글본 블랙 모두 NodeJs를 쉽게 개발하고 적용 할 수 있는 개발 환경 까지 기본 제공하고 있습니다.

<인텔 에디슨>

<비글본 블랙>


이와 같이 임베디드 보드에 탑재된 NodeJs는  웹 개발에 필요한 기본적인 모듈 이외에도 GPIO, I2C, SPI 등의
센서, 주변 장치와 통신에 필요한 모든 기능을 제공하고 있어서, C/C++로 작성할때 보다 생산성이 뛰어나고
완성도 높은 웹 기반 IoT 서비스를 만드는데 좋은 환경을 제공합니다.

그런데, 라즈베리파이는 개발용 보드가 목적이 아닌 교육용 컴퓨터 목적이라서 NodeJs를 이용해서 손쉽게 개발 할 수 있는 
환경을 따로 제공해 주지 않습니다. 그래서 별도의 작업을 해야 합니다.
솔직히, 이런 라즈베리파이로 이런 작업을 하는것이 왜 유행인지 저도 잘 이해가 안가긴 합니다. ㅎㅎ
그러면서 저도 라즈베리파이에 대한 컨텐츠를 생산하고 있구요. 쩝…입니다.

자 그럼 라즈베리파이에서 NodeJs를 사용하려면 어떻게 해야 하는지 알아 볼까요?

우선 라즈비안 OS 배포 판에 따라서 NodeJs가 기본 설치 되어 있는 경우도 있고 없는 경우도 있습니다.
제가 경험한 바로는 특정 버전 이후 부터 기본 설치되어 있는 식이 아니라 마이너 버전이 올라 가는 경우에 어떤경우는 기본 설치되고
그 다음 버전에는 빠져 있는 경우가 있습니다.
게다가 기본 설치되어 있는 버전이라 하더라도 NodeJs 버전이 너무 오래된것 이거나 npm이 제대로 동작하지 않는 등의 문제를 가지고 있으니
무조건 새롭게 설치해서 사용하는 것이 좋을 것이라 생각합니다.

라즈베리파이에 NodeJs를 설치 하는 방법은 크게 4가지로 볼 수 있습니다.
  1. apt-get 설치
  2. heroku 빌드 배포판(*.deb) 설치
  3. nodejs.org 빌드 배포판(tar.gz) 설치
  4. nodejs.org 소스코드 컴파일 설치

결론적으로 미리 정리하자면 위의 4가지 방법 중에 2. heroku 빌드 배포판을 사용하는 것이 가장 편리합니다. (2018.6 수정) 3.nodejs.org 배포판을 설치하는것이 정답입니다. 

1. apt-get 설치
데비안 계열 리눅스의 패키지 관리자인 apt-get 명령어로 nodeJs 를 손쉽게 설치할 수 있습니다.
하지만, 우숩게도 레포지토리에 nodejs 라는 이름과 node 라는 이름이 따로 등록되어 있고
각각 또한 정상적으로 동작하지 않습니다.

$ sudo apt-get install nodejs

$ sudo apt-get install node

nodejs로 설치하면 실행 명령도 node 가 아닌 nodejs로 해야 되고 설치되는 버전도 0.10.29 입니다.(2016.5.4 기준)
결론적으로 별로 권장하지 않습니다.

2. heroku 빌드 배포판


heroku는 cloud platform(클라우드 플랫폼) 서비스의 일종으로 구글 앱 엔진이랑 비슷한 거라 생각하면 쉽습니다.
그래서 많은 사람들이 여기에 가입해서 서비스를 하고 있는데, Nathaniel Johnson(nathanjohnson320@gmail.com)이라는
사람이 node-arm이라는 서비스를 heroku에 운영 중이고 그 URL이 아래와 같습니다.


이 사이트가 서비스하는 내용은 nodejs 소스를 라즈베리파이에 맞게 빌드해서 데비안 패키지 형태로 만들어서 배포해서
사람들이 다운로드 받을 수 있게 해주는 겁니다.
그래서 우리는 손쉽게 다운로드 받아 설치만 하면 되기 때문에 편리하게 사용할 수 있습니다.

설치 하는 방법은 아래와 같습니다.

$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb
$ sudo dpkg -i node_latest_armhf.deb

설치가 끝나면 버전을 확인해서 설치 여부를 확인할 수 있습니다.

$ node --version
v4.2.1



2016.5.4일 기준으로 설치되는 버전은 v4..2.1 이네요.
같은 날짜 기준으로 NodeJs.org에서 배포하는 LTS 버전이 v4.4.3이고 최신 버전이 v6.0.0 이라 볼때
아주 오래된 버전은 아니라 할 수 있습니다.

만약 설치 후 node 명령어를 찾을 수 없다고 나오면, 로그인 쉘에서 로그아웃 했다가 다시 로그인 해주면 됩니다.
또, 라즈비안 버전이 “Jessi"가 아닌 이전 버전인 “wheezy”를 사용하는 경우에는 gcc, g++ 컴파일러를 새롭게 설치한 후에 진행해야 합니다.
이 경우에 대한 자세한 사항은 아래 URL에서 확인 하면 됩니다.



3. NodeJs.org 빌드 배포판

(아래 내용은 현재의 상황과 맞지 않습니다. 새롭게 작성한 포스트를 참하세요. : http://blog.xcoda.net/99

NodeJs.org 에서는 각 플랫폼에 맞는 설치(바이너리) 파일을 제공하는데, 배포 형식은 윈도우즈용 , 맥용,  리눅스 바이너리를 기본으로 제공하고,
 그 밖에 ARM, SunOS, Docker, AIX 등의 형태도 제공하고 있습니다.

과거에는 라즈베리파이 전용으로 빌드해서 배포하는 형식을 제공하였습다.
“http://nodejs.org/dist/“ 에 접근하면,
각 배포 버전별 디렉토리가 나오고 그 안에서 다시 원하는 플랫폼의 배포판을 다운로드 받을 수 있었습니다.
라즈베리파이는 “node-v0.x.x-linux-arm-pi.tar.gz” 이라는 이름으로 배포되어 이를 다운로드 받으면 됩니다.
그러나, v0.11.9를 끝으로 더 이상 라즈베리파이 전용 배로판은 나타나지 않고 있습니다.


요즘에는 아예 ARMv6, ARMv7, ARMv8 버전을 내놓고 있어서 LTS버전이나 최신 버전이냐에 따라 선택하고나서,
원하는 CPU 아키텍처의 링크를 클릭하면 직접 다운로드 하거나 오른쪽 마우스 클릭으로 다운로드 URL을 알아 낼 수 있습니다.



라즈베리파이는 모델에 따라 사용하는 CPU아키텍쳐가 다른데요.
라즈베리파이 2 이전 모델은 ARMv6이고, 그 이후 모델은 ARMv7 입니다.

따라서 각 모델에 맞게 빌드된 배포판을 다운로드 받으면 됩니다.
2016.5.4일 기준으로 아래에 링크를 해두는데, 당연히 nodejs.org 사이트를 방문해서 새로운 URL을 얻으시는것이 좋습니다.


설치 명령은 아래와 같고 다만, 다운로드 URL만 자신의 모델과 시점에 맞게 바꾸시면 됩니다.
아래 명령어는 라즈베리파이 2에 LTS 버전을 기준으로 했을 때 입니다.
$ wget https://nodejs.org/dist/v4.4.3/node-v4.4.3-linux-armv7l.tar.xz 
$ tar -xvf node-v4.4.3-linux-armv7l.tar.xz 
$ cd node-v4.4.3-linux-armv7l
$ sudo cp -R * /usr/local/


설치가 끝나면 버전을 확인해서 설치 여부를 확인할 수 있습니다.

$ node --version
v4.3.3


4. nodejs.org 소스코드 컴파일 설치

NodeJs.org에서 소스코드를 받아 직접 빌드해서 사용 할 수 있습니다.
소스코드 다운로드는 nodejs.org 사이트에서 받을 수 있습니다.



빌드 명령어는 아래와 같이 진행하면 됩니다.

$ sudo apt-get install build-essential libssl-dev pkg-config
$ wget https://nodejs.org/dist/v4.4.3/node-v4.4.3.tar.gz
$ tar -zxf node-v4.4.3.tar.gz
cd node-v4.4.3
$ ./configure
$ sudo make && sudo make install

소스코드를 빌드해서 사용하면 아무래도 가장 최신의 내용을 믿을 수 있는 상태에서 사용할 수 있어서 가장 좋은 방법이지만,
한가지 알아 두어야 하는 것은 라즈베리파이 보드에서 빌드를 하면 반나절 이상 시간이 소요된다는 것입니다.
CPU도 엄청 뜨거워 집니다.

아무래도 C/C++ Cross Compiler를 개발 PC에 설치해서 빌드한 후에 설치만 하는 것이 훨씬 좋은 방법이겠죠.
C/C++ Cross Compiler 설치와 관련해서는 향후 다시 다루겠습니다.

이번 포스트는 라즈베리파이에 NodeJs를 설치하는 것에 대해 알아 보았습니다.

이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다.
  1.  라즈비안 OS 설치하기
  2. 키보드 모니터 없이 라즈베리파이 Login 하기
  3. Wifi 설정 / 기본 설정하기
  4. 파이썬 + Eclipse로 라즈베리파이 개발하기
  5. >> 라즈베리파이에 NodeJs 설치하기 <<
  6. NodeJs + Eclipse로 라즈베리파이 개발하기
  7. C/C++ Cross Compiler(Tool Chain) 설치하기
  8. Eclipse + C/C++ 로 라즈베리파이 개발하기