iT邦幫忙

DAY 2
10

node.js伺服器實戰系列 第 2

node.js伺服器實戰(2) - 環境建置

如何安裝與配置好node.js的執行環境,方便node.js程式與模組執行。
編譯執行檔

在Unix-like作業系統中

node.js的更版速度非常快,大概幾星期就會有一個版本。作業系統預設的套件管理程式可以取得的程式,通常更新速度遠遠不如node.js更版的速度。所以最好的建置方式,還是自己編譯。

在Unix-like的作業系統安裝node.js,必要條件是要先安裝GCC4.x以及Python。V8的C++程式碼需要使用GCC4.x以上才能編譯,而node的建置系統雖然長得很像autoconf,實際上是跑python來驅動整個建置的設定及編譯過程。除了編譯需要的工具之外,如果要使用https以及crypt模組,那還需要安裝openssl。至於實際建置過程則非常簡單,把從nodejs.org上取得的原始碼解壓縮後,三個指令就解決:

 >./configure
 ......
 >make
 ......
 >sudo make install

如果是使用Mac OS,在安裝完畢xcode之後,還需要安裝port或是homebrew,然後透過他建置類似Linux的環境,把必備的軟體裝好,就可以拿來編譯node.js了。

在Windows中

node-v0.4.x及更早的版本,在Windows上編譯,需要有cygwin或是msys這樣的Unix模擬環境,然後透過他來編譯。編譯方式跟在其他Unix Like的作業系統中差不多。編譯完成後,還必須把一些dll複製到node.exe目錄中,才能執行。不過以我自己的經驗...有時還是需要自己手動調整環境,才有辦法順利進行編譯。

node-v0.5.x之後的版本,除了在nodejs.org官網的下載連結中可以直接下載執行檔,v0.5.6之後版本的編譯系統也支援Visual C++ 2010(Express就可以),不過還是需要安裝python。解開原始檔後,裡面會有一個產生node、V8以及其他程式庫編譯所需要的sln檔的batch執行檔(最後還是呼叫python程式來做處理),透過簡單的指令就可以產生node.sln,然後進入Visual C++的命令列工具,執行msbuild node.sln就可以一次編譯完畢。

模組的環境建置及安裝、使用NPM

node.js除了核心的模組,最方便的還是大量的第三方模組。所以除了node執行環境(其實就是node執行檔啦)建置之外,不得不先提到模組配置以及NPM這個node用的套件管理工具。

在Unix-like作業系統中快速安裝NPM

不使用NPM這個套件管理工具,使用node.js的便利性就差很多,畢竟現在已經有超過上千個套件可以使用,不需要自己從頭開發。

上去NPM的官網:http://npmjs.org 首頁,上面就提供了一行安裝的shell指令,把他複製下來,然後進console貼上執行,就安裝完NPM了,非常簡單。不過他使用到curl,所以需要在安裝NPM之前先安裝curl。

在Windows作業系統中管理套件

在Windows上比較麻煩的是,NPM還不支援Windows...XD...不過其實手動設定模組環境並不太困難。只要利用兩個環境變數,就可以讓node.js自動找到安裝好的模組。以我自己在Windows系統中的配置為例:

  1. 我把node.exe及其他需要的執行檔,全部放在D:\node\bin,然後設定好PATH環境變數,把這個路徑加上去。
  2. 我把模組都放在D:\node\node_modules,然後設定好NODE_PATH環境變數,值就是模組目錄。

設定好這些環境變數後,在console就可以隨時執行node,而node會利用NODE_PATH環境變數,去尋找要使用的套件。不過沒有NPM比較麻煩的地方,就是模組之間的依賴性需要自己注意XD。NPM官網上有提供搜尋套件的功能(http://search.npmjs.org),除了下載套件以及套件本身的資訊,還可以找到套件本身的依賴性資料,可以參考他來自行管理套件。

預計在node.js的下一個穩定版本,也就是v0.6.x出來以後,NPM也能支援Widnows。在這之前,Windows的用戶就只好先手動一下。

補充一下:

還是需要稍微提到模組怎麼安裝比較好,留到怎樣使用模組的地方好像還是怪怪的。

從npmjs.org下載的模組,壓縮檔(.tgz)解開來後,會發現所有東西都放在package這個目錄裡面。假設解開到模組目錄的就是package這個目錄,接著需要打開package/package.json檔案,看看"name"這個欄位的值,然後把package目錄名稱改成這個名字。

之後,在node.js程式中,使用require('名字')就可以使用模組。

相關文章


上一篇
node.js伺服器實戰(1) - node.js簡介
下一篇
node.js伺服器實戰(3) - 基礎知識
系列文
node.js伺服器實戰33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言