'잡것/Web'에 해당되는 글 1건

  1. 2017.01.19 [Node.js] Node Version Manager(NVM) 설치

요즘 핫한 Node.js 환경설정을 해봅시다.


뭐, 시작하기 앞서 또 잡설이지만,,,

솔직히 이녀석이 웹시장에서 뜰줄은 알고는 있었지만 이정도 일줄은 예상치 못했다.

내가 Node.js 를 처음 접했을 때가 2012년도 였는데 그 때엔 v0 버전대의 알파버전이 나오던 시기였다.

이 녀석을 처음 접했을 때 가장 편했던(?) 점은 역시 자바스크립트를 사용한다는 점이었다.

PHP나 JSP 처럼 새로운 문법을 배울 필요가 없다는 점은 분명 정말 엄청난 메리트였다.

또한 C/C++로 짜여진 네이티브 프로그램을 모듈로 실행시킬수 있다는 점 또한 다른 서버사이드 언어들과의 큰 차별점이지 않나 싶다. 

뭐 처음에는 이정도 감상으로 정말 꽤 괜찮은 물건이 나왔네 하며 감탄을 하였었다.

하지만 요즘은... 쏟아지는 패키지에 모듈에,,, 어디서부터 손대야 할지를 모르겠다.

분명 개발은 쉬워졌지만, 익혀야 할게 너무 늘었다는게 문제다.

게다가 한번 이러한 모듈들이 익히고 나서 계속 써먹을 수 있는게 아닌게 문제다.

나중에 써먹으려고 다시 보면 뭔가 메이저한 업데이트가 있어서 많이 달라져 있다거나, 더 좋은 모듈이 나오거나 해서 완전히 새로 익혀야하는 경우가 쉽상이기 때문이다...

그렇지 않은 모듈 생태계가 어디있겠냐만은 Node.js 쪽은 특히나 심한 것 같다...


위에서 너무 단점만 말한 것 같지만 뭐, 그래도 아무튼 좋은 녀석이고 웹 생태계 변화에 엄청난 공을 한 놈은 틀림없는 사실이다.




1. 왜 NVM인가

node.js를 설치하는 가장 간단한 방법은 역시 apt 패키지 관리자를 사용하는 것이다.


root@glassylife:~# apt-get install nodejs npm

캬~ 넘나 간단한 것.

근데 이방법에는 약간의 문제가 있다.

사실 짚으려는 문제의 원인은 npm을 통해 설치할 모듈에 있는거라

여기서 문제라고 언급하기엔 조금 지나친 감이 있지만...

어떤 것이냐면 다음과 같다.


'고오오올져스한 웹서버'를 만들기 위해 필요한 어떤 노드 모듈 A 가 있다.

근데 얘가 오래전에 만들어진거라 v4 이하의 Node 에서만 동작한다.

참고로 Node.js 최신 버전은 LTS 기준 v6.9.4 이다.

당연히 난 더 이상 업데이트도 안하는 이 망할 모듈을 버리고 더욱 세련된 다른놈을 사용하고 싶다.

그렇지만 내가 원하는 기능을 제공하는 모듈은 저것 하나뿐이다...

어떡하겠는가.

선택지는 셋 중 하나다.

1. 새로 만들거나

2. 모듈을 사용할 수 있는 버전대로 node.js를 다운그레이드하거나

3. 때려치거나...


1번 선택지도 충분히 고려해볼만 하지만 이 포스팅의 목적은 NVM을 사용하는 것이기 때문에 나는 2번 선택지를 고른다.

그래서 node.js 를 v4.0 으로 다운그레이드했다.

좋다 여기까진.


근데 이번엔 '그레에에에잇트한 웹서버'를 만들고 싶다.

여기에 필요한건 단지 최신버전의 node.js 이다.

기껏 다운그레이드 시켜놧더니 최신버전이라니...

어디의 금수저씨는 리소스 제한도 있겠다 서버 한 대 새로 장만하시면 되겠지만 흙수저는 그럴 수 없다.(억지스럽지만 그냥 그렇다 하자)

'고오오올져스한 웹서버'가 돌고있는 동일한 머신에서 '그레에에에잇트한 웹서버' 소스를 작성하고 실행시키려는데 문제가 발생한다.

node.js 패키지는 글로벌로 깔려있어서. 최신버전으로 다시 업그레이드하면 '고오오올져스한 웹서버'는 못돌린다..


역시 서버 한 대를 새로 장만하고 싶은 마음이 굴뚝 같지만 앞서 말했듯이 난 흙수저라 어떻게든 한 대의 자원으로 해결을 봐야 한다

이 때 쓸 수 있는게 바로 NVM(Node Version Manager) 이다.

NVM 통해 각각 다른 버전의 node 로 서버를 돌리면 된다.

사실 예로 든게 억지스러울 순 있다.

NVM의 컨셉이해를 위한 예시니 그러려니하자.

그렇다고 아주 허무맹랑한 예시는 아니다

최근에 겪은건 아니지만 2년전인가 5년전에 확실히 나도 위와 같은 상황에 당면한 경험이 있다.


나는 그 때 NVM을 이용해본 이후로 혹시 모를 상황에 대비해 그냥 습관적으로 설치하게 되었다.




2. NVM 설치

뭐 암튼 각설하고 NVM을 설치해보자.


curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash


현재 18 / 01 / 2017 (GMT) 를 기준으로 0.33 버전이 최신인가 보다.

또는 다음 링크에서 최신버전을 확인 및 다운 받을 수 있다.


https://github.com/creationix/nvm#install-script



윗 명령어를 사용하면 알아서 쉘스크립트 실행하여 NVM를 설치 해준다.

완료가 되었다면 putty를 다시 껏다가 키거나 모종의 방법으로 세션을 다시 열자.

또는 그렇게 하지않고 source 명령어로 NVM을 바로 실행시킬 수 있다.


root@glassylife:~# source ~/.bashrc

nvm --version 명령어로 잘 설치되었나 확인!


root@glassylife:~# nvm --version
안 되는 분이 계신다면... 리포트 부탁드린다...
나는 한번에 되서 문제점을 인지할 수가 없당.
여기까지 node version을 컨트롤해주는 NVM설치를 마쳤다.



3. node & npm 설치

nvm --help 명령어로 자세한 사용법을 알아볼 수 있다.

하지만 원하는건 최신버전 및 특정버전의 node를 설치 및 사용하는 것이므로 자세한 사용법은 스스로 찾아 공부하도록 하자.


최신버전 및 특정버전 node.js 를 설치하는 방법은 각각 다음과 같다.

npm은 해당 노드버전이 배포될 때 같이 배포되었던 버전으로(아마도?) 같이 설치되므로 신경쓸 필요가 없다.


root@glassylife:~# nvm install node
root@glassylife:~# nvm install v0.12.18

nvm install node 하면 현재 최신버전의 node를 받게 되고, LTS 버전이 필요하다면 --lts 옵션을 붙여준다.



그리고 nvm으로 설치된 노드 버전들을 다음 명령어로 확인할 수 있다.


root@glassylife:~# nvm ls


다음 명령어로 디폴트 node 버전을 선택할 수 있다.


root@glassylife:~# nvm use v0.12.18

또는 특정 버전으로 node를 실행 시킨다.

root@glassylife:~# nvm run 0.12.18 app.js



이렇게 설치했던 각각의 노드버전들은 ~/.nvm/versions/node 폴더에 잘 정리되어있다. 심심하면 한번 ~/.nvm의 구조를 들여다봐도 좋을 듯 싶다.







Posted by nfyfamraa
,