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

时间:2013-05-08 07:13:02

标签: node.js iisnode

信息:我是node.JS的新手!

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

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

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

我希望我在这里有意义! :)

4 个答案:

答案 0 :(得分:23)

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

  1. 自行托管node.exe进程,就像在* nix上一样。在开发过程中,您可能只是从命令行启动它。在生产中,您希望提供一种机制,该机制将围绕node.exe提供进程生命周期管理(例如,在OS启动时启动它)。在Windows上执行此操作的最合理方法是使用Windows服务(也称为NT服务)。可以帮助您执行此操作的组件是http://nssm.cc/
  2. 使用iisnode(http://github.com/tjanczuk/iisnode)使用IIS主机node.js。与自托管相比,此方法具有https://github.com/tjanczuk/iisnode/wiki中概述的许多优点。但是你也想探索性能影响(实际上并非所有这些影响都很糟糕):http://tomasz.janczuk.org/2012/06/performance-of-hosting-nodejs.html

答案 1 :(得分:21)

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

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

Express应用程序假定它拥有整个URL空间并从root用户本身启动URL,如下所示:

Default EXPRESS App.js

将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服务器上。

答案 2 :(得分:7)

对我有用的是什么:

  1. Install IISNode
  2. Install URL Rewrite module of IIS
  3. 在Node.js app /文件夹中添加web.config文件。以下是web.config文件的内容:

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

  4. ...

    <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>
    

答案 3 :(得分:2)

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

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