如何为Web应用程序运行Node.JS服务器?
信息:我对node.JS非常陌生!
我已经写了一个示例服务器,可以监听端口XXXX上的http请求。 当我从命令行(Windows)运行这个服务器,似乎工作得很好。 它响应在浏览器中打开的对localhost:XXXX的请求。
问:这是应该如何工作? 对于要运行的节点服务器,是否应该始终打开一个CMD提示符让服务器监听请求? 我可以不用IISNode做什么吗?
我明白,如果我向JS文件发出请求,在IISNode中logging为一个Node.JS文件,并且该NODE应该处理它; 那么我将有节点处理我的请求。 但是,这假定IIS是我的Web服务器,并且可以由Node处理特定的请求。
我希望我在这里有道理! 🙂
在Windows上,您有两个托pipenode.js应用程序的选项:
- 像在* nix上一样自行托pipenode.exe进程。 在开发过程中,您可能只是从命令行启动它。 在生产中,您想要提供一种机制,以提供有关node.exe的进程生命周期pipe理(例如,在OS启动时启动它)。 在Windows上最合理的方法是使用Windows服务(也称为NT服务)。 一个可以帮助你做到这一点的组件是http://nssm.cc/ 。
- 使用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,如下所示:
编辑你app.js看起来像下面(但把你的应用程序的目录名称,而不是“aaspass”!!):
现在将一个web.config文件放在应用程序的根目录下,如下所示(您可以使用此模板:webconfig)。
再次编辑文件并将名称“aaspass”更改为您的应用程序的目录名称。
而已! 您可以根据需要为尽可能多的应用程序执行此操作,并将其托pipe在SAME服务器上。
什么对我有效:
- 安装IISNode
- 安装IIS的URL重写模块
-
在您的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