如何在Windows 10和Windows Server 2012及更新版本上托管`node.js`应用程序的现代方法是什么?

9

我想知道如何在Windows 10、Windows Server 2012及更高版本上部署我的node.js应用程序(使用Koa)。

在互联网上,我看到了关于使用iisnode的旧提示,但同时也注意到人们担心开发者没有回答许多重要问题(与iisnode有关),而且长时间没有对iisnode的源代码进行更改。 :(

在Windows 10和Windows Server 2012及更高版本上,现代化的托管node.js应用程序的方式是什么?

如果您能提供逐步说明文档的链接,我将不胜感激。


请澄清一下,您是在询问如何在 Windows 上运行基于 NodeJS 的 Web 服务器以用于生产工作负载?而不是仅用于本地开发? - Dai
回避问题的答案是,绝大多数生产环境下的NodeJS部署都在Linux或BSD变体上运行,而不是在Windows上运行 - 这就解释了为什么没有太多的文档可用。 - Dai
1
@Dai,我想知道如何在Windows服务器(用于生产)和Windows 10上(作为服务,如果可能的话不要打开控制台窗口)部署我的node.js应用程序。 - Andrey Bushman
1个回答

12

有几种方法可以在Windows上运行NodeJS以进行生产工作负载。

首先要了解的是,Windows内置了(内核模式!)用于HTTP服务器的支持,称为HTTP.sys,IIS和其他Web服务器使用它来提供HTTP流量,而不仅仅是在端口80上打开侦听套接字(这就是微软的IIS在20世纪90年代后期的Web服务器基准测试中击败Apache的方式)。

你的选择包括:

  • 直接将NodeJS暴露到端口80/443
    • 这是最简单的方法,但有很多缺点。但只要您不需要在服务器上运行不同的多个应用程序和非NodeJS代码,那么这是一个有效的选择。只需记得先禁用HTTP.sys
  • HTTP.sys后面运行NodeJS
    • iisnode库的作者还编写了另一个名为httpsys的库,用于NodeJS(因为在IIS后面运行使用了许多与在HTTP.sys后面运行相同的技术):https://github.com/tjanczuk/httpsys - 不幸的是,它已经过时了,但是它真的没有太多的代码,所以你可能可以自己修改使之能够与最新版本的Node一起使用。这也是开源的一个要点!(“不要抱怨,自己动手修复!”)
  • 通过Microsoft的iisnode分支在IIS后面运行NodeJS:


1
这是一个关于在Windows上生产环境中运行NodeJS的现代选项的精彩分析。我发现大多数资料都已经过时或者不适用于Windows。非常感谢! - dmikester1
1
也想知道PM2是否适合在这个列表中使用。https://blog.cloudboost.io/nodejs-pm2-startup-on-windows-db0906328d75 - dmikester1
糟糕,不要在意我之前关于PM2的评论,我看到你发布的最后一条指令链接实际上使用了PM2。太好了! - dmikester1
Azure/IISNode - 最新的发布日期是2017年,所以我会撤回“积极”维护的说法,因为这已经不再适用了 :) - HellBaby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接