前段时间看到老赵写的《基于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,其代码如下:

1
2
3
4
5
6
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]

实际上,此文件的真实内容为:

1
2
3
4
5
6
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 (陈计节)结合原文翻译并进一步创作,欢迎转载;转载时请注明原出处