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

如何为web应用程序运行Node.JS服务器?,node.js,iisnode,Node.js,Iisnode,信息:我对node.JS很陌生 我已经编写了一个示例服务器,它可以侦听端口XXXX上的http请求。当我从命令行(Windows)运行此服务器时,它似乎运行良好。它在浏览器中打开时响应对localhost:XXXX的请求 问:这是怎么回事?要运行节点服务器,是否应该始终打开CMD提示符,以便服务器侦听请求? 我不能用iSnode做点什么吗 我理解如果我向一个JS文件发出请求,该文件在IISNode中记为Node.JS文件,并且该节点应该处理它;然后,我将让节点为我处理请求。 但这假定IIS是我的

信息:我对node.JS很陌生

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

问:这是怎么回事?要运行节点服务器,是否应该始终打开CMD提示符,以便服务器侦听请求? 我不能用iSnode做点什么吗

我理解如果我向一个JS文件发出请求,该文件在IISNode中记为Node.JS文件,并且该节点应该处理它;然后,我将让节点为我处理请求。 但这假定IIS是我的web服务器,并且特定的请求可以由节点处理


我希望我在这里讲得通!:)

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


在Windows上,您有两种托管node.js应用程序的选项:

  • 自托管node.exe进程,就像在*nix上一样。在开发过程中,您可能只需要从命令行启动它。在生产环境中,您希望提出一种机制,以提供node.exe周围的进程生命周期管理(例如,在操作系统启动时启动它)。在Windows上执行此操作最合理的方法是使用Windows服务(也称为NT服务)。一个可以帮助您实现这一点的组件是
  • 使用iisnode()将node.js托管在IIS中。与自托管相比,此方法具有中概述的许多优点。但是,您还想探索性能方面的影响(实际上并非所有影响都很糟糕):

  • 我用适当的方法解决了它。是的,我想是。。但这些评论似乎都没有回答如何为托管在同一IIS上的不同应用程序“运行”app.js(该IIS还提供PHP、ASPX等服务)

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

    express应用程序假定它拥有整个URL空间,并从根目录本身启动URL,如图所示:



    编辑app.js,使其如下所示(但将应用程序的目录名改为“aaspass”!!):





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

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


    就这样!您可以根据需要对任意多个应用程序执行此操作,并将它们托管在同一台服务器上。

    对我有用的是:

  • 在Node.js应用程序/文件夹中添加web.config文件。以下是web.config文件的内容:

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

  • 
    
    iisnode不知道,但在linux/unix上,您希望使用
    nohup
    或在后台运行进程。后一种方法非常适合在应用程序崩溃时保持其运行。我对Unix不太熟悉。您的意思是shell提示符始终处于打开状态,以便节点服务器继续运行吗?或者它可以在后台运行,就像后台进程一样,用户看不见。是的,进程就是在后台运行的。我想你可以看看永远,也应该在windows机器上工作(但正如我之前所说,我不知道iisnode是否内置了这样的功能)。。。但它似乎并没有回答我的问题:(当我们说“主机使用IISNode”时,我们是什么意思?包括app.js使用是否可以使用nssm并获取当前登录用户的用户id?如果您是“自主机”IIS与node.js同时使用端口80会怎么样?我的意思是谁在端口3000上托管一个站点lol@Epirocks您可以使用IIS ARP执行反向代理
    <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>