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

问题描述:

信息:我对node.JS非常陌生!如何为Web应用程序运行Node.JS服务器?

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

问:这是应该如何工作?为了运行节点服务器,是否应该始终打开服务器的CMD提示来侦听请求? 我可以不用IISNode做什么吗?

据我所知,如果我向JS文件发出请求,在IISNode中将其记录为Node.JS文件,并且该NODE应该处理它;那么我会让Node为我处理请求。 但是,这假设IIS是我的Web服务器,并且可以由Node处理特定的请求。

我希望我在这里有道理! :)

+0

说不上约iisnode,但在Linux/UNIX要使用两种'nohup'或[永远](HTTPS后台运行的进程:// github上。 COM/nodejitsu /永远)。后者对于保持应用程序即使运行崩溃也非常有用。 – 2013-05-08 07:19:57

+0

我对Unix并不熟悉。你的意思是一个shell提示符总是打开的,以便节点服务器继续运行? 还是它可以在后台运行,就像后台进程一样,用户看不到 – 2013-05-08 07:45:39

+0

是的,进程是在后台运行的。我认为你可以永远观察,也应该在Windows机器上工作(但正如我之前所说,我不知道iisnode是否具有内置的这种功能)。 – 2013-05-08 08:36:06

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

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

明示应用程序假定它拥有整个URL空间,并开始从根自身的URL,如下所示:你app.js

Default EXPRESS App.js

编辑以如下所示(但把应用程序的目录名称,而不是“aaspass” !!):


app.js modified as per directory structure of app hosted on IIS


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

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


Modified We.Config to add rules to redirect to relevant app.js

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

如果您使用的是Windows,你可以(并且可能应该)在IIS中运行的Node.js:

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

+1

我没看过那个页面......虽然我没有回答我的问题,但是:( – 2013-05-10 12:19:17

在Windows上你有托管的Node.js应用两种选择:

  1. 像在* nix上一样自承载node.exe进程。在开发过程中,您可能只是从命令行启动它。在生产中,您希望提供一种机制,以提供有关node.exe的进程生命周期管理(例如,在OS启动时启动它)。在Windows上执行此操作的最合理方法是使用Windows服务(也称为NT服务)。一个可以帮助你做到这一点的组件是http://nssm.cc/
  2. 使用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
+0

当我们说“host using IISNode”时,我们是什么意思?在头文件中使用

+0

是否有可能使用nssm并获取当前登录用户的用户ID? – SharpCoder 2015-07-22 14:34:32

+1

如果您“自我托管”IIS的同时使用端口80与node.js 。我的意思是谁在端口3000上托管一个站点lol – Epirocks 2015-09-24 10:45:21

什么工作对我来说:

  1. Install IISNode
  2. Install URL Rewrite module of IIS
  3. 添加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>