用issnode+IIS来托管NodeJs Server之二:移植
这几篇文章是一个系列的:
- 用issnode+IIS来托管NodeJs Server之一:安装篇
- 用issnode+IIS来托管NodeJs Server之二:移植
- 用issnode+IIS来托管NodeJs Server之三:加入Windows集成验证功能
- 用issnode+IIS来托管NodeJs Server之四:支持Debug
这个是我的网站的基本设置,网站名是iisCER,路径端口的,见图:
在Handler Mappings里面可以看到iisnode已经被应用了:
这个是我的web.config:
<configuration> <system.webServer> <handlers> <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="mysite"> <match url="/*" /> <action type="Rewrite" url="app.js" /> </rule> </rules> </rewrite> <defaultDocument> <files> <add value="app.js" /> </files> </defaultDocument> </system.webServer> </configuration>
首先,对于app.js的请求都使用iisnode来处理(其实可以写*.js,但是我想以后利用IIS来帮我处理静态页面的路由)
其次,默认的主页设置成了app.js。这样,就不需要用 http://localhost/app.js 来访问我的网站主页了。
最后,我加入了URL Rewrite,所有对于我网站子路径(Sub Path)的请求,都由app.js来处理。这样expressJs框架就能正常使用了。
在调试过程中,其实还是碰到一些问题的,我调试的方法是:
1. 添加Debug代码:为简单起见,修改app.js,加入这三行代码调试,看看每一个web请求,到底是被哪个handler处理的(当然,这个代码最后是要删除的):
app.get("/", function (req, res) { res.send(200, "this is handled in app.get(/)."); }); app.get("/myapp", function(req,res) { res.send(200, "this is handled in app.get(/myapp)."); }); app.use(function (req, res) { res.send(200, "this is handled in app.use()."); });
2. iisnode会把日志保存到你网站的iisnode子目录里面,根据这个日志,分析起来很方便:
memcached is initialized Express server listening on port \\.\pipe\5bc8ccb7-fa9c-4b93-86fb-18c051a9b4ad [90mGET / [32m200 [90m10644ms - 3.18kb[0m [90mGET /javascripts/jquery.min.js [36m304 [90m3ms[0m [90mGET /plugins/jquery-ui-1.10.3.custom/css/ui-darkness/jquery-ui-1.10.3.custom.min.css [36m304 [90m2ms[0m [90mGET /plugins/jquery-ui-1.10.3.custom/js/jquery-ui-1.10.3.custom.min.js [36m304 [90m1ms[0m [90mGET /stylesheets/style.css [36m304 [90m1ms[0m [90mGET /stylesheets/computer_style.css [36m304 [90m1ms[0m [90mGET /stylesheets/common.css [36m304 [90m1ms[0m [90mGET /plugins/jquery-ui-1.10.3.custom/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png [36m304 [90m1ms[0m [90mGET /plugins/jquery-ui-1.10.3.custom/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png [36m304 [90m4ms[0m
好了,网站就这么简单的移植好了!一行代码没改,就加了一个web.config文件。