下载:iisnode-core-iis7-v0.1.19.0-x64.msi
。
使用以下命令进行安装:msiexec /i iisnode-core-iis7-v0.1.19.0-x64.msi WOW=1
。这将在64位机器上安装32位版本的iisnode。请注意,iisnode.dll
将被安装在C:\Program Files (x86)\iisnode\iisnode.dll
中。
下载32位版本的node.js(例如node-v0.12.0-x86.msi
),并将其安装在C:\nodejs
中。
创建一个新的应用程序池:
名称:node.js 托管管道模式:集成 .NET Framework 版本:无托管代码 启用32位应用程序:True 标识:管理员
假设您的Node.js服务器脚本文件是server.js
。进入Web文件夹并创建文件node_start.cmd
。在命令文件中,您应该将当前路径更改为您的wwwroot
,并使用您的server.js
文件启动node.js。您应该使用双引号路径。
C: cd "C:\HostingSpaces\...\wwwroot" "C:\nodejs\node.exe" "C:\HostingSpaces\...\wwwroot\server.js"
在您的server.js
中,请确保您有process.env.PORT
var http = require('http'); http.createServer(function (req, res) { ... your code here ... }).listen(process.env.PORT);
(可选)如果您使用任何node.js 本机扩展,例如Coconut2D、SQLite、Cairo或WebKit模块,则必须将*.node
文件和DLL复制到wwwroot\node_modules
文件夹中。请确保您还设置了NTFS安全性以允许执行这些文件,或提升应用程序池以模拟管理员。要加载本机扩展,请使用下面所示的require()
。
var http = require('http'); var Coconut2D = require("Coconut2D.node"); http.createServer(function (req, res) { ... your code here ... }).listen(process.env.PORT);
将以下web.config
放置在您的Web根目录中(例如C:\HostingSpaces\...\wwwroot
)。这将启用IIS7处理任何非Node文件,例如图像、静态HTML文件和XML文件,并让node.js仅处理其自己的服务器端脚本。
让IIS处理静态文件并在node.js上运行服务器端脚本是一种高度推荐的做法,可以大大提高您的网站性能。
在此示例中,我使用重写规则使用iisnode
处理.asp
文件。将*.asp*
替换为您的node.js服务器脚本扩展名(例如*.njs*
)。请注意,通配符模式中没有根斜杠;这一点很重要,以及模式末尾的最后一个*
。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="node.js" verb="*" modules="iisnode" />
</handlers>
<iisnode nodeProcessCommandLine=""C:\...\start_node.cmd"" />
<defaultDocument>
<files>
<remove value="index.php" />
<remove value="default.aspx" />
<remove value="iisstart.htm" />
<remove value="index.html" />
<remove value="index.htm" />
<remove value="Default.htm" />
</files>
</defaultDocument>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<rewrite>
<rules>
<rule name="CavoBoutique" patternSyntax="Wildcard">
<match url="*.asp*" />
<action type="Rewrite" url="node.js" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>