如何重启iisnode?

时间:2016-01-05 14:21:27

标签: node.js iisnode appcmd

我们在Windows 2008R2服务器上使用iisnode和IIS 7.5。 node.js应用程序在启动时加载一些配置数据。配置数据有时会发生变化,需要重新启动应用程序。

通过Windows系统管理器控制台重新启动IIS站点实例时,一切正常。

通过appcmd stopappcmd start命令重新启动IIS时,node.js-app不会再次启动。看起来iisnode无法识别IIS的重启。

如何通过命令(即通过命令行)重新启动iisnode环境中的node.js应用程序?

2 个答案:

答案 0 :(得分:5)

您可以使用watchedFiles文件中iisnode元素的Web.config属性,通过IISNode自动回收网站。我知道这不是通过命令行,但从您的问题来看,这似乎也可以解决问题,而不需要任何人的人工干预。

使用以下信息,您可以设置IISNode以观察您的配置文件,并且只要它们发生更改,IISNode就会回收该站点。

  

Comment from IISNode Sample Config

     

watchedFiles - 将以分号分隔的文件列表,这些文件将被监视以进行更改;对文件的更改会导致应用程序回收;

     

每个条目都包含一个可选的目录名称和所需的文件名,它们与主应用程序入口点的目录相关   位于;

     

仅允许在文件名部分使用通配符;例如:“* .js; node_modules \ foo \ lib \ options.json; app_data * .config.json”

来自Web.config的示例iisnode元素,只要Web.config发生更改,或者应用程序的顶级文件夹中的任何.js文件,它将重新启动站点。

    <iisnode
        node_env="%node_env%"
        nodeProcessCountPerApplication="1"
        maxConcurrentRequestsPerProcess="1024"
        maxNamedPipeConnectionRetry="100"
        namedPipeConnectionRetryDelay="250"
        maxNamedPipeConnectionPoolSize="512"
        maxNamedPipePooledConnectionAge="30000"
        asyncCompletionThreadCount="0"
        initialRequestBufferSize="4096"
        maxRequestBufferSize="65536"
        uncFileChangesPollingInterval="5000"
        gracefulShutdownTimeout="60000"
        loggingEnabled="true"
        logDirectory="iisnode"
        debuggingEnabled="true"
        debugHeaderEnabled="false"
        debuggerPortRange="5058-6058"
        debuggerPathSegment="debug"
        maxLogFileSizeInKB="128"
        maxTotalLogFileSizeInKB="1024"
        maxLogFiles="20"
        devErrorsEnabled="true"
        flushResponse="false"
        enableXFF="false"
        promoteServerVars=""
        configOverrides="iisnode.yml"
        watchedFiles="web.config;*.js"                    
        nodeProcessCommandLine="C:\Program Files (x86)\nodejs\node.exe" />

答案 1 :(得分:0)

appcmd可以为您完成此操作,但是您需要回收应用程序池而不是站点。我用来在bat文件中成功完成此操作的命令如下:

%windir%\system32\inetsrv\appcmd recycle apppool /apppool.name:"Your Application Pool Name"