利用iisnode模組,讓你的Node.js應用跑在Windows系統IIS中

來源:互聯網
上載者:User

標籤:問題   false   source   預設   mod   最大串連數   串連   自動   reac   

最近比較喜歡用Node.js做一些簡單的應用,一直想要部署到生產環境中,但是手上只有一台windows server 2008伺服器,並且已經開啟了IIS服務,運行了很多.Net開發的網站,80連接埠已經被佔用了。  

起初是想用nginx來作為web伺服器監聽80連接埠,將所有web訪問轉寄到對應的IIS和node,但由於已啟動並執行老網站眾多,如此配置實在需要大量的精力,於是突發奇想,能不能直接利用IIS來託管node服務呢?進過一番搜尋之後發現了iisnode模組,可以很輕鬆的解決這個問題。下面就把實操步驟分享出來,方便有同樣需求的朋友參考。

 

首先iisnode是一個IIS Module載入到IIS以後,就可以在任意網站中通過Web.config指定某些路徑轉交給node程式執行,通過參數配置,可以設定啟動的node進程個數,以及最大串連數等。並且可以監聽網站檔案變化,自動重啟node服務等功能。

 

iisnode代碼託管在github上,如果不想自己編譯,可以直接通過以下連結下載適合自己的版本。

https://github.com/tjanczuk/iisnode/wiki/iisnode-releases

比如我的伺服器是windows server 2008 64位系統,選擇下載“iisnode for iis 7/8 (x64)”安裝程式

只要版本正確,安裝過程並沒有需要特別注意的,自己根據提示一步一步完成即可。

 

之後還需要安裝一下IIS的URL Rewrite模組(需要利用rewrite功能轉寄相關的請求交給node服務來執行)

:http://www.iis.net/downloads/microsoft/url-rewrite

 

軟體全部安裝完成之後,在IIS中建立網站,將目錄指定到我們的nodejs應用目錄即可,最後關鍵的一步,在目下建立web.config設定檔並寫入如下的內容:

<configuration>    <system.webServer>        <handlers>            <add name="iisnode" path="app.js" verb="*" modules="iisnode" resourceType="Unspecified" requireAccess="Script" />        </handlers>         <rewrite>            <rules>                <rule name="all">                    <match url="/*" />                    <action type="Rewrite" url="app.js" />                </rule>            </rules>        </rewrite>         <iisnode promoteServerVars="REMOTE_ADDR" />    </system.webServer></configuration>

作用是將目前的目錄的所有請求都利用iisnode模組轉寄到node服務,並指定了node的執行目錄。其中的app.js就是node應用的入口檔案(可以按照自己的目錄結構進行修改)。

一切就緒,現在開啟瀏覽器訪問網站,就可以看到效果了。

 

如果啟動並執行時候出現如下錯誤:

500.19配置錯誤 不能在此路徑中使用此配置節。如果在父層級上鎖定了該節,便會出現這種情況。鎖定是預設設定的(overrideModeDefault="Deny"),或者是通過包含 overrideMode="Deny" 或舊有的 allowOverride="false" 的位置標記明確設定的。

通過cmd運行如下代碼即可解決:

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers

其中的handlers是報錯的節點名字。

 

另外如果是Express的項目,建議把web.config檔案改為如下內容

<configuration>    <system.webServer>        <handlers>            <add name="iisnode" path="launch.js" verb="*" modules="iisnode" resourceType="Unspecified" requireAccess="Script" />        </handlers>        <rewrite>            <rules>                <rule name="all">                    <match url="/*" />                    <action type="Rewrite" url="launch.js" />                </rule>            </rules>        </rewrite>        <iisnode promoteServerVars="REMOTE_ADDR" />    </system.webServer></configuration>

並建立程式入口檔案launch.js 代碼如下:

#!/usr/bin/env noderequire(‘./bin/www‘);

如此操作的原因請參考博文:http://heeroluo.net/article/detail/118/suffering-from-iisnode

 

利用iisnode模組,讓你的Node.js應用跑在Windows系統IIS中

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.