1. 사전 정보
Node.js에 대해서는 맑님이 올려주신 /index.php/miscellaneous/250-node-js-1을 읽어보세요.
2. 소스 코드를 이용한 설치
저는 이 Node.js를 소스 코드로 설치하려고 합니다.
물론 https://nodejs.org/download/를 살펴보시면 알 수 있듯이 훨씬 편한 설치 방법도 제공되고 있어요. 운영 환경이나 테스트 목적에 맞게 적절한 방법을 선택하면 됩니다.
아래 예시는 node-v0.12.4.tar.gz를 기준으로 작성한 기록입니다. 최신 버전을 설치하는 경우에는 다운로드 파일명이나 빌드에 필요한 의존성이 달라질 수 있으니, 공식 문서의 안내를 함께 확인하는 것이 좋습니다.
3. configure
node-v0.12.4.tar.gz 파일을 다운로드한 후, 설치하고자 하는 디렉터리를 prefix로 지정하고 configure를 실행합니다.
# ./configure --prefix=/app/nodejs
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'clang': 0,
'gcc_version': 44,
'host_arch': 'x64',
'icu_small': 'false',
'node_install_npm': 'true',
'node_prefix': '/app/nodejs',
'node_shared_cares': 'false',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_v8': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_mdb': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'openssl_no_asm': 0,
'python': '/usr/bin/python',
'target_arch': 'x64',
'uv_library': 'static_library',
'uv_parent_path': '/deps/uv/',
'uv_use_dtrace': 'false',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 0,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_random_seed': 0,
'v8_use_snapshot': 'true',
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk
4. make 및 설치
이제 make를 실행합니다.
LINK(target) /app/depot/nodejs-v0.12.4/out/Release/nodejs: Finished touch /app/depot/nodejs-v0.12.4/out/Release/obj.target/nodejs_dtrace_header.stamp touch /app/depot/nodejs-v0.12.4/out/Release/obj.target/nodejs_dtrace_provider.stamp touch /app/depot/nodejs-v0.12.4/out/Release/obj.target/nodejs_dtrace_ustack.stamp touch /app/depot/nodejs-v0.12.4/out/Release/obj.target/nodejs_etw.stamp touch /app/depot/nodejs-v0.12.4/out/Release/obj.target/nodejs_mdb.stamp touch /app/depot/nodejs-v0.12.4/out/Release/obj.target/nodejs_perfctr.stamp touch /app/depot/nodejs-v0.12.4/out/Release/obj.target/specialize_node_d.stamp make[1]: Leaving directory `/app/depot/nodejs-v0.12.4/out' ln -fs out/Release/nodejs node
make 앞부분은 생략했습니다. 그런데 빌드 시간이 굉장히 오래 걸렸습니다.
make install도 잘 되었고, 출력 내용은 생략하겠습니다. 설치 후에는 지정한 prefix 디렉터리에 파일이 들어갔는지 확인해 봅니다.
# pwd /app/nodejs # ls -l 합계 16 drwxr-xr-x 2 root root 4096 2015-06-07 00:16 bin drwxr-xr-x 3 root root 4096 2015-06-07 00:16 include drwxr-xr-x 3 root root 4096 2015-06-07 00:16 lib drwxr-xr-x 4 root root 4096 2015-06-07 00:16 share #
당연히 실행 파일은 bin 하위에 있겠지요.
# cd bin # ls -l 합계 15848 -rwxr-xr-x 1 root root 16221824 2015-06-06 23:56 node lrwxrwxrwx 1 root root 38 2015-06-07 00:16 npm -> ../lib/node_modules/npm/bin/npm-cli.js
설치 확인은 버전 출력으로도 간단히 확인할 수 있습니다.
# ./node -v # ./npm -v
5. 간단한 실행 테스트
그럼 간단히 테스트 파일을 만들어서 실행해 보겠습니다. 아래 내용을 osinfo.js로 저장합니다.
var os = require('os');
console.log("** os.type = " + os.type());
console.log("** os.platform = " + os.platform());
console.log("** os.arch = " + os.arch());
실행합니다.
# ./node osinfo.js ** os.type = Linux ** os.platform = linux ** os.arch = x64
이렇게 출력되면 소스 코드로 빌드한 Node.js가 정상적으로 실행되는 것입니다.
끝!