就是想让node.js的程序跑在iis的意思,参考这篇文章《》即可。
WCAT (WEB CAPACITY ANALYSIS TOOL)去了,我还以为讲完了~~结果把网站一发布,跑不起来,发现需要手动编写web.config来加入handler,OK,原生的node程序跑起来了。结果express下的网站又没跑起来,最终解决后,串起来:
- 下载安装,需要注意的是,下的64位版的node是装到64位的program files路径下的,你需要下32位版的,或者直接下一个node.exe到32位program files目录下,新建一个nodejs文件夹放进去;
- 下载安装,此时如此你的c:\program files(x86)\nodejs\node.exe不存在的话它就会报错退出了,这就是我第一步如此提示的原因,装完后管理员权限执行安装目录下的setupsamples.bat可立即体验下,没必要;
- 下载安装包,express需要
- 将你的node网站发布到iis,比如:,应用程序池的.net版本任选,无意义
发布网站后做两件事:
1,将监听的端口改为:process.env.PORT,如在express下:app.set('port',process.env.PORT||3000);这样即能保留iis端口又能让node伺服网站的时候使用自定义的(如3000)端口;
2,在网站根目录下添加web.config文件,加入如下内容:
这样,所有/开头的url都由app.js接管,app.js又被注册成了一个http handler,使用iisnode模块,这时候一个标准的express就可以正常跑起来了
最后,我还用了angular,正好试一下上述url rewrite会不会把angular的url路由也接管掉,实测不会,如果用angular或其它一些框架来做SPA(单页应用)程序是没问题的,原因应该是这些框架都是用切换hash的方式来路由,github那样完全更改url的来不及测试,有时间加上测试结果
P.S. 上面介绍安装配置过程的时候,讲到安装完iisnode后可立即体验一下的那个bat程序可以不干,其实还是建议执行一下的,它会在默认网站下生成一个node虚拟路径,里面有比较丰富的示例和说明,特别是上述web.config文件,里面还有很多可配置的地方,在configuration/readme.htm文件里面有详细的描述,建议执行和详阅。
P.S.P.S 某次重装电脑(win8.1)后我又对着自己的文档来干这事,结果却碰到了http error 5500.19,错误代码:0x80070021,描述:This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".结果发现这不是问题,我自己的iis没配置好罢了,从添加删除功能里面,把CGI勾上即可:http://stackoverflow.com/questions/9794985/iis-this-configuration-section-cannot-be-used-at-this-path-configuration-lock