專欄的第二篇文章《Node&NPM的安裝與配置》介紹Node的安裝部署、環境配置以及NPM的安裝。
## Node.js安裝與配置
Node.js已經誕生兩年有余,由于一直處于快速開發中,過去的一些安裝配置介紹多數針對0.4.x版本而言的,并非適合最新的0.6.x的版本情況了,對此,我們將在0.6.x的版本上介紹Node.js的安裝和配置。(本文一律以0.6.1為例,0.6的其余版本,只需替換版本號即可。從[http://nodejs.org/#download](http://nodejs.org/#download)可以查看到最新的二進制版本和源代碼)。
### Windows平臺下的Node.js安裝
在過去,Node.js一直不支持在Windows平臺下原生編譯,需要借助Cygwin或MinGW來模擬POSIX系統,才能編譯安裝。幸運的是2011年6月微軟開始與Joyent合作移植Node.js到Windows平臺上([http://www.infoq.com/cn/news/2011/06/node-exe](http://www.infoq.com/cn/news/2011/06/node-exe)?),這次合作的成果最終呈現在0.6.x的穩定版的發布上。這次的版本發布使得Node.js在Windows平臺上的性能大幅度提高,使用方面也更容易和輕巧,完全擺脫掉Cygwin或MinGW等實驗室式的環境,并且在某些細節方面,表現出比Linux下更高的性能,細節參見[http://www.infoq.com/news/2011/11/Nodejs-Windows](http://www.infoq.com/news/2011/11/Nodejs-Windows)。
在Windows(Windows7)平臺下,我將介紹二種安裝Node.js的方法,即普通和文藝安裝方法。
#### 普通的安裝方法
普通安裝方法其實就是最簡單的方法了,對于大多Windows用戶而言,都是不太喜歡折騰的人,你可以從這里([http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi](http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi)?)直接下載到Node.js編譯好的msi文件。然后雙擊即可在程序的引導下完成安裝。
在命令行中直接運行:
~~~
node -v
~~~
命令行將打印出:
~~~
v0.6.1
~~~
該引導步驟會將node.exe文件安裝到C:\Program Files (x86)\nodejs\目錄下,并將該目錄添加進PATH環境變量。
#### 文藝的安裝方法
Windows平臺下的文藝安裝方法主要提供給那些熱愛折騰,喜歡編譯的同學們。在編譯源碼之前需要注意的是你的Windows系統是否包含編譯源碼的工具。Node.js的源碼主要由C++代碼和JavaScript代碼構成,但是卻用gyp工具([http://code.google.com/p/gyp/](http://code.google.com/p/gyp/)?)來做源碼的項目管理,該工具采用Python語言寫成的。在Windows平臺上,Node.js采用gyp來生成Visual Studio Solution文件,最終通過VC++的編譯器將其編譯為二進制文件。所以,你需要滿足以下兩個條件:
1. Python(Node.js建議使用2.6或更高版本,不推薦3.0),可以從這里([http://python.org/](http://python.org/))獲取。
2. VC++ 編譯器,包含在Visual Studio 2010中(VC++ 2010 Express亦可),VS2010可以從這里([http://msdn.microsoft.com/en-us/vstudio/hh388567](http://msdn.microsoft.com/en-us/vstudio/hh388567))找到。
下載Node.js的0.6.1版本的源碼壓縮包([http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz](http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz)?)并解壓之。
通過命令行進入解壓的源碼目錄,執行vcbuild.bat release命令,然后經歷了漫長的等待后,編譯完成后,在Release目錄下可以找到編譯好的node.exe文件。通過命令行執行node -v。
命令行返回結果為:
~~~
v0.6.1
~~~
事實上,如果你的編譯環境中存在WiX工具集([http://wix.sourceforge.net/](http://wix.sourceforge.net/)?),執行vcbuild.bat msi release命令,你將會在Relase目錄下找到node.msi。
是的,我們回到了一開始的普通安裝方法。所謂文藝就是多走一些路,多看一些風景罷了。
### Unix/Linux平臺下的Node.js安裝
由于Node.js尚處于v0.x.x的版本的快速發展中,Unix/Linux平臺的發行版都不會預置Node的二進制文件,通過源碼進行編譯安裝是目前最好的選擇。而且用Unix/Linux系統的同學們多數都是文藝程序員,本節只介紹如何通過源碼進行編譯和安裝。
#### 安裝條件
如同在Windows平臺下一樣,Node.js依然是采用gyp工具管理生成項目的,不同的是通過make工具進行最終的編譯。所以Unix/Linux平臺下你需要以下幾個必備條件,才能確保編譯完成:
1. Python。用于gyp,可以通過在shell下執行python命令,查看是否已安裝python,并確認版本是否符合需求(2.6或更高版本,但不推薦3.0)。
2. 源代碼編譯器,通常 Unix/Linux平臺都自帶了C++的編譯器(GCC/G++)。如果沒有,請通過當前發行版的軟件包安裝工具安裝make,g++這些編譯工具。
1. Debian/Ubuntu下的工具是apt-get
2. RedHat/centOS下通過yum命令
3. Mac OS X下你可能需要安裝xcode來獲得編譯器
3. 其次,如果你計劃在Node.js中啟用網絡加密,OpenSSL的加密庫也是必須的。該加密庫是libssl-dev,可以通過apt-get install libssl-dev等命令安裝。
#### 檢查環境并安裝
完成以上預備條件后,我們獲取源碼并進行環境檢查吧:
~~~
wget http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz
tar zxvf node-v0.6.1.tar.gz
cd node-v0.6.1
./configure
~~~
上面幾行命令是通過wget命令下載最新版本的代碼,并解壓之。./configure命令將會檢查環境是否符合Nodejs的編譯需要。
~~~
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for gcc : ok
Checking for library dl : yes
Checking for openssl : yes
Checking for library util : yes
Checking for library rt : yes
Checking for fdatasync(2) with c++ : yes
'configure' finished successfully (7.350s)
~~~
如果檢查沒有通過,請確認上面提到的三個條件是否滿足。如果configure命令執行成功,就可以進行編譯了:
~~~
make
make install
~~~
Nodejs通過make工具進行編譯和安裝(如果make install不成功,請使用sudo以確保擁有權限)。完成以上兩步后,檢查一下是否安裝成功:
~~~
node -v
~~~
檢查是否返回:
~~~
v0.6.1
~~~
至此,Nodejs已經編譯并安裝完成。如需卸載,可以執行make uninstall進行卸載。
## 小結
以上介紹了*nix和Windows平臺下Nodejs的安裝,之后可以如同Nodejs官方網站上介紹的那樣,編寫example.js文件。
~~~
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
~~~
在命令行中執行它:
~~~
node example.js
~~~
你就可以通過瀏覽器訪問[http://127.0.0.1:1337](http://127.0.0.1:1337/)得到Hello World的響應。
## 安裝NPM
NPM的全稱是Node Package Manager,如果你熟悉ruby的gem,Python的PyPL、setuptools,PHP的pear,那么你就知道NPM的作用是什么了。沒錯,它就是Nodejs的包管理器。Nodejs自身提供了基本的模塊。但是在這些基本模塊上開發實際應用需要較多的工作。所幸的是筆者執筆此文的時候NPM上已經有了5112個Nodejs庫或框架,這些庫從各個方面可以幫助Nodejs的開發者完成較為復雜的應用。這些庫的數量和活躍也從側面反映出Nodejs社區的發展是十分神速和活躍的。下面我將介紹安裝NPM和通過NPM安裝Nodejs的第三方庫,以及在大陸的網絡環境下,如何更好的利用NPM。
### Unix/Linux下安裝NPM
就像NPM的官網([http://npmjs.org/](http://npmjs.org/))上介紹的那樣,安裝NPM僅僅是一行命令的事情:
~~~
curl http://npmjs.org/install.sh | sh
~~~
這里詳解一下這句命令的意思,curl http://npmjs.org/install.sh是通過curl命令獲取這個安裝shell腳本,按后通過管道符| 將獲取的腳本交由sh命令來執行。這里如果沒有權限會安裝不成功,需要加上sudo來確保權限:
~~~
curl http://npmjs.org/install.sh | sudo sh
~~~
安裝成功后執行npm命令,會得到一下的提示:
~~~
Usage: npm
where is one of:
adduser, apihelp, author, bin, bugs, c, cache, completion,
config, deprecate, docs, edit, explore, faq, find, get,
help, help-search, home, i, info, init, install, la, link,
list, ll, ln, ls, outdated, owner, pack, prefix, prune,
publish, r, rb, rebuild, remove, restart, rm, root,
run-script, s, se, search, set, show, star, start, stop,
submodule, tag, test, un, uninstall, unlink, unpublish,
unstar, up, update, version, view, whoami
~~~
我們以underscore為例,來展示下通過npm安裝第三方包的過程。
~~~
npm install underscore
~~~
返回:
~~~
underscore@1.2.2 ./node_modules/underscore
~~~
由于一些特殊的網絡環境,直接通過npm install命令安裝第三方庫的時候,經常會出現卡死的狀態。幸運的是國內CNode社區的[@fire9](http://weibo.com/fire9)同學利用空余時間搭建了一個鏡像的NPM資源庫,服務器架設在日本,可以繞過某些不必要的網絡問題。你可以通過以下這條命令來安裝第三方庫:
~~~
npm --registry "http://npm.hacknodejs.com" install underscore
~~~
如果你想將它設為默認的資源庫,運行下面這條命令即可:
~~~
npm config set registry "http://npm.hacknodejs.com/"
~~~
設置之后每次安裝時就可以不用帶上—registry參數。值得一提的是還有另一個鏡像可用,該鏡像地址是[http://registry.npmjs.vitecho.com](http://registry.npmjs.vitecho.com/),如需使用,替換上面兩行命令的地址即可。
### Windows下安裝NPM
由于Nodejs最初在Linux開發下的歷史原因,導致NPM一開始也不支持Windows環境,但是隨著Nodejs成功移植到到Windows平臺,NPM在Windows下的需求亦是日漸增加。下面開始Windows下的NPM之旅吧。
#### 安裝GIT工具
由于github網站不支持直接下載打包了所有submodule的源碼包,所以需要通過git工具來簽出所有的源碼。從[http://code.google.com/p/msysgit/downloads/list](http://code.google.com/p/msysgit/downloads/list),可以下載到msysgit這個Windows平臺下的git客戶端工具(最新版本文件為Git-1.7.7.1-preview20111027.exe)。在下載之后雙擊安裝。
#### 下載NPM源碼
打開命令行工具(CMD),執行以下命令,可以通過msysgit簽出NPM的所有源碼和依賴代碼并安裝npm。
~~~
git clone --recursive git://github.com/isaacs/npm.git
cd npm
node cli.js install npm -gf
~~~
在執行這段代碼之前,請確保node.exe是跟通過node.msi的方式安裝的,或者在PATH環境變量中。這段命令也會將npm加入到PATH環境變量中去,之后可以隨處執行npm命令。如果安裝中遇到權限方面的錯誤,請確保cmd命令行工具是通過管理員身份運行的。安裝成功后,執行以下命令:
~~~
npm install underscore
~~~
返回:
~~~
underscore@1.2.2 ./node_modules/underscore
~~~
如此,Windows平臺下的NPM安裝完畢。如果遭遇網絡問題無法安裝,請參照Linux下的NPM命令,添加鏡像地址。
## 參考文獻
* [http://nodejs.org/](http://nodejs.org/)
* [https://github.com/joyent/node/wiki/Installation](https://github.com/joyent/node/wiki/Installation)
* [http://npmjs.org/doc/README.html#Installing-on-Windows-Experimental](http://npmjs.org/doc/README.html#Installing-on-Windows-Experimental)