如何为Web应用程序运行Node.JS服务器?

信息:我对node.JS非常陌生!

我已经写了一个示例服务器,可以监听端口XXXX上的http请求。 当我从命令行(Windows)运行这个服务器,似乎工作得很好。 它响应在浏览器中打开的对localhost:XXXX的请求。

问:这是应该如何工作? 对于要运行的节点服务器,是否应该始终打开一个CMD提示符让服务器监听请求? 我可以不用IISNode做什么吗?

我明白,如果我向JS文件发出请求,在IISNode中logging为一个Node.JS文件,并且该NODE应该处理它; 那么我将有节点处理我的请求。 但是,这假定IIS是我的Web服务器,并且可以由Node处理特定的请求。

我希望我在这里有道理! 🙂

       

网上收集的解决方案 "如何为Web应用程序运行Node.JS服务器?"

在Windows上,您有两个托pipenode.js应用程序的选项:

  1. 像在* nix上一样自行托pipenode.exe进程。 在开发过程中,您可能只是从命令行启动它。 在生产中,您想要提供一种机制,以提供有关node.exe的进程生命周期pipe理(例如,在OS启动时启动它)。 在Windows上最合理的方法是使用Windows服务(也称为NT服务)。 一个可以帮助你做到这一点的组件是http://nssm.cc/
  2. 使用iisnode( http://github.com/tjanczuk/iisnode )使用IIS托pipenode.js。 与自托pipe相比,此方法在https://github.com/tjanczuk/iisnode/wiki中列出了一些优点。 但是,你也想探索性能的影响(并不是所有的实际上都不好): http : //tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html 。

我用适当的方法解决了它。 是的,IISNode它是..但似乎没有任何评论回答如何“运行”app.js为不同的应用程序托pipe在同一个IIS(这也是服务于PHP,ASPX等)

第1步。编辑节点应用程序的入口点(通常)app.js以获取新的URL结构。

快速应用程序假定它拥有整个URL空间,并从根本上启动URL,如下所示:

默认EXPRESS App.js

编辑你app.js看起来像下面(但把你的应用程序的目录名称,而不是“aaspass”!!):

根据托管在IIS上的应用程序的目录结构修改app.js

现在将一个web.config文件放在应用程序的根目录下,如下所示(您可以使用此模板:webconfig)。

再次编辑文件并将名称“aaspass”更改为您的应用程序的目录名称。

修改了We.Config来添加规则重定向到相关的app.js

而已! 您可以根据需要为尽可能多的应用程序执行此操作,并将其托pipe在SAME服务器上。

什么对我有效:

  1. 安装IISNode
  2. 安装IIS的URL重写模块
  3. 在您的Node.js应用程序/文件夹中添加web.config文件。 这里是web.config文件的内容:

    在处理程序中,我只需要指向app.js(典型的应用程序入口点)。 我没有改变任何我的路线(没有必要附加任何文字)。

..

 <configuration> <appSettings> <add key="NODE_ENV" value="production" /> </appSettings> <system.webServer> <handlers> <add name="iisnode" path="server/app.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <clear /> <rule name="cdw"> <match url="/*" /> <action type="Rewrite" url="server/app.js" /> </rule> </rules> </rewrite> </system.webServer> </configuration> 

如果你在Windows上,你可以(也可能应该)在IIS下运行Node.js:

http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx