讓你的 Node.js 跑在 Windows 的 IIS 中

前段時間看到老趙寫的《基於Node.js、Express和Jscex開發的ToDo網站示例》一文中提到的Node.js 將 Javascript 運行在服務品上的理念,就想到了一位老 Geek 的一段話(抱歉,原URL已經忘記了)說道他週末回家花了幾個小時將 Javascript 試圖運行在 PC 機上當日常編程工具來使用,就像 python 那樣。

Node.js 確實是個不錯的東西,國內也已經有了一大批學習者,最新版是0.5.5 版。關於它的介紹,我就不再重複了,雖然幾乎每篇關於 Node.js 的文章都以“Node.js 是什麼”來開篇。技術文檔可以在這裏找到
我要講的是在 Windows 和 IIS 中來運行 Node.js。

Node.js 原本是原生於 Linux 平臺的東東,不過微軟也看出它的好處來,所以主動與 Node.js 團隊接觸,並給予支持,所以才促成了這樁美事,使得 Windows 平臺現在也能運行 Node.js 了,在前不久發行的 0.5.5 版中,已包含了 Windows 的生成版。博客園對來自 nodejs.org官方博客中的此消息進行了翻譯報道

一、在 Windows 中運行 Node.js


官方提供了運行環境之後,在 Windows 中運行 Node.js 變得簡單。
通過簡單的四步,立即啓動你的 Node.js 站點:
1 下載 Windows 版的 Node.js 宿主就行程序 Node.exe,置於任一目錄,如  c:\node\node.exe 
2 新建一個 Hello World 示例程序 c:\server.js,其代碼如下:

var http = require('http');  
http.createServer(function (req, res) {  
  res.writeHead(200, {'Content-Type': 'text/html'});  
  res.end('<h1>Cool Nodejs Web Server</h1>');  
}).listen(1888, "127.0.0.1");  
console.log('Server running at http://127.0.0.1:1888/');

3 通過 Windows 的命令提示符輸入提示符輸入命令 c:\node\node.exe c:\server.js後回車運行,看到控制檯上輸出 Server running at http://127.0.0.1:1888/ 字樣即表示運行成功了
4 打開任意網頁瀏覽器,輸入 http://localhost:1888/ 的網址並訪問,就可以看到效果了

通過以上步驟,你就可以在 Windows 上運行 Node.js 了,通過進一步的瞭解學習,可以構建一個基於 Javascript 的網站了。
按照 Node.js 官方的說法,Windows Server 2003 平臺也可以通過此方法來運行 Node.js

二、將 Node.js 集成到 IIS 中


 下面的內容翻譯自 Scott 的文章 《Installing and Running node.js applications within IIS on Windows - Are you mad?》,主要講的是在 Windows  的 IIS 中配置和安裝 Node.js,有所刪節,同時也加入一些我自己的見解。

最近 Tomasz Janczuk 忙於 iisnode 項目

你也許以爲 Windows 與 node 並不應該放在一起提及。“這是錯誤的!他們怎麼看?以爲我認爲IIS只爲 .NET 而生麼?” 也許你還記得幾年前我在 CodeMash 關於 IIS7 和 PHP 的發言中展示如何用 IIS7 配合 PHP 和 FastCGI 來每秒處理成千上萬個請求的。IIS 體系、Windows 體系和 Azure 體系希望使 Windows 可以運行一切。請記住,我們賣的是 Windows,所以如果它能處理更多事工作,當然是好事。
爲什麼要使 Node 在 IIS 裏運行?Tomasz 做了最好的詮釋:
 
進程管理(iisnode 模塊可以有效地管理 node.exe 進程的生命週期)
多核服務器的可擴展性(突破了 node.exe 單線程限制,因而可通過啓動多個進程來均衡 HTTP 流壓力)
自動更新 (自動監視源文件,一旦被更改,就回收進程)
通過HTTP來訪問日誌(通過HTTP的方式來訪問由 node.exe 產生的輸出)
與其他類型資源共存(iisnode 模塊提供了IIS集成並協同解決與其他類型資源的並存,如HTML、PHP、非node程序的普通Javascript等)
對 Nodejs 應用程序儘量少的修改(對已有的 Node.js WEB程序做極少的修改即可部署到基於 IIS 的 iisnode 站點中)
集成管理體驗(與IIS完美集成,可享受由 IIS 提供的強大功能,如端口共享、URL重寫、壓縮等)


好了,那現在如何在 IIS 中運行 Node.js 呢?
首先,你需要 IIS7(這需要 Windows Vista 以上的個人操作系統或者 Windows Server 2008 的服務器系統,Server 2003 上默認安裝的 IIS 需要經過升級方可使用)
 
1 下載最新版的 node.exe,將其置於 c:\node;
2 下載 iisnode 的最新生成版
3 解壓 iisnode 的 zip 文件到 c:\inetpub\iisnode 目錄(這只是我的建議,並不確定是否就是最佳位置)[ciznx注:事實證明這並非最佳位置,下面我會註明,不影響此處的安裝過程]
4 以管理員權限運行一個命令提示符,並運行此位置的 install.bat

請注意,你馬上就要成功了!
好,現在進入 IIS 管理工具,併爲 Node.js 網站新建一個應用程序池 Node Apps,託管代碼部分隨便選擇。
在網站裏建一個爲 node.js 示例站點(剛纔下載的 iisnode 項目中已包含),並指定端口爲 1888、根目錄爲 c:\inetpub\iisnode\www,將其應用程序池設置爲 Node Apps。站點目錄結構應該如下圖所示:
 
Node App Pool
 

如果在 IIS 管理面板中點擊模塊,就可以發現 iismode 已註冊爲本地代碼模塊:




此時,你就可以試着訪問 http://localhost:1888/node/helloworld/hello.js 訪問到你的 Node.js 示例站點,並獲得如下響應:

Hello, world! [helloworld sample]

實際上,此文件的真實內容爲:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello, world! [helloworld sample]');
}).listen(process.env.PORT);

[ciznx注:如果此時,你在瀏覽器裏獲得了 Http 錯誤指示Service Unavailable則表示網站權限方面遇到了問題。此時試着把剛纔安裝 iismode 時解壓到 c:\inetpub\iisnode 的 www 目錄複製到別處,爲其添加 Users 的讀訪問權限,並修改當前站點的根目錄爲新目錄]

好了,到這裏,你的 Node.js 在 Windows 的 IIS 中的配置已完成。進一步的內容,請參照原文

三、相關資源


1 Node.js 官方網站及最新版下載
2 Node.js 0.5.5 版技術文檔
3 在 Windows 上運行 Node.js,開始
4 本文的原文
5 iismode 項目地址





聲明:此文章由ciznx (陳計節)結合原文翻譯並進一步創作,歡迎轉載;轉載時請註明原出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章