信息:我是很新的Node.js的!
我写了一个可以听端口XXXX http请求的样本服务器。 当我运行命令行从该服务器(Windows)中它似乎运作良好。 在浏览器中打开时XXXX:它回应到本地主机发出的请求。
问:这是这是如何工作的? 对于节点服务器来运行,应该有永远是一个命令提示符打开服务器监听请求? 我不能做IISNode“东西”?
我明白,如果我做一个JS文件,这是在IISNode注意作为Node.js的文件,该节点应该处理它的请求; 然后,我将有节点中处理我的请求。 但后来这个假定IIS是对我的Web服务器和具体要求可以通过节点来处理。
我希望我在这里做的意义! :)
在Windows上,有托管的Node.js应用的两个选项:
- 自主机node.exe过程就像你在* nix。 在开发过程中你可能只是在命令行启动它。 在生产中要拿出一个机制,将提供约node.exe过程生命周期管理(如操作系统启动时启动它)。 这样做在Windows上的最合理的方式是使用Windows服务(也称为NT服务)。 它可以帮助你做这个组件是http://nssm.cc/ 。
- 使用iisnode node.js的主机与IIS( http://github.com/tjanczuk/iisnode )。 相比于自托管这种方法有许多中列出的好处https://github.com/tjanczuk/iisnode/wiki 。 但你也想探索对性能的影响(并非全部坏实际上): http://tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html 。
我解决它使用适当的方法。 是的,IISNode它。但没有任何意见似乎回答托管在同一IIS不同的应用程序如何“跑” app.js(这也是服务PHP,ASPX等)
步骤1.编辑您的节点应用程序的入口点(典型值)app.js新的URL结构。
明示的应用程序假定它拥有整个URL空间,从根自身开始的URL,如下所示:
编辑您app.js看起来像以下(但放的不是“aaspass”应用程序的目录名!):
现在把web.config文件在您的应用程序的根,它看起来像下面的(你可以使用这个模板:webconfig)。
重新编辑该文件并更改名称“aaspass”到应用程序的目录名。
而已! 根据需要您可以为许多应用程序做到这一点,收留他们同一台服务器上。
什么工作对我来说:
- 安装IISNode
- 安装URL重写IIS的模块
添加web.config文件在你的Node.js应用程序/文件夹。 下面是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