iis10 管理 nodejs 服务

nodejs 的管理工具有 PM2,但是,有 bug,一些接口莫名其妙的就挂了,直接用 node 启动项目是没问题的。刚好服务器是 window2016,索性就用 iis 来管理 node 项目吧。

环境准备

    1. 安装 nodejs官网选择 LTS 版本下载
    1. 安装 iisnode下载点击第二个 64 位的安装包进行下载
    1. 安装 iis 的 URL Rewrite 模块官网点击’Install this extension’下载

开始配置

nodejs 双击按钮,一路 next,安装后,win+r 输入 cmd 打开命令窗口,输入:node -v得到版本号成功。

iisnode 是 iis 的模块,用于执行 nodejs 程序。

  1. 安装完毕后,进入安装目录,找到 setupsamples.bat 文件双击执行

初始化

  1. 执行 setupsamples.bat 成功后,即在 Default Web Site 站点下创建了一个名称为 node 的目录.
  2. 访问http://localhost/node/,出现如下页面即代表iisnode 安装成功。

URL Rewrite 是 iis 模块,可以通过定义规则实现 URL 的重定向。

  1. 点击绿色按钮下载,然后双击安装

  2. 安装完成后访问http://localhost/node/helloworld/hello.js,出现如下页面即代表URL Rewrite 模块安装成功。

部署项目

上面两大步骤全做完毕,接下来开始正式配置。

  1. 建立站点。
    在 iis 中建立一个新的站点,指向 nodejs 项目的文件夹。

  2. 创建 web.config 文件。
    在 nodejs 项目文件夹的根目录下新建一个 web.config 文件并写入以下内容:

    <configuration>
      <system.webServer>
        <!-- 指示main.js文件是node.js应用程序执行的入口文件,现在由iisnode模块处理 -->
    
        <handlers>
          <add
            name="iisnode"
            path="main.js"
            verb="*"
            modules="iisnode"
            resourceType="Unspecified"
            requireAccess="Script"
            preCondition="bitness64"
          />
        </handlers>
    
        <rewrite>
          <rules>
            <rule name="all">
              <match url="/*" />
              <action type="Rewrite" url="main.js" />
            </rule>
          </rules>
        </rewrite>
        <!-- iisnode配置只能有一个 -->
        <iisnode
          node_env="%node_env%"
          nodeProcessCountPerApplication="1"
          maxConcurrentRequestsPerProcess="1024"
          maxNamedPipeConnectionRetry="100"
          namedPipeConnectionRetryDelay="250"
          maxNamedPipeConnectionPoolSize="512"
          maxNamedPipePooledConnectionAge="30000"
          asyncCompletionThreadCount="0"
          initialRequestBufferSize="4096"
          maxRequestBufferSize="65536"
          watchedFiles="*.js;node_modules\*;router\*.js;views\*.jade"
          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"
          configOverrides="iisnode.yml"
          nodeProcessCommandLine="C:\Program Files\nodejs\node.exe"
          promoteServerVars="REMOTE_ADDR"
        />
    
        <defaultDocument>
          <files>
            <add value="index.js" />
          </files>
        </defaultDocument>
    
        <!--
     另外一个可以修改的设置是node.exe可执行文件和拦截器的路径:
    
     <iisnode
       nodeProcessCommandLine="&quot;%programfiles%\nodejs\node.exe&quot;"
       interceptor="&quot;%programfiles%\iisnode\interceptor.js&quot;" />
     -->
      </system.webServer>
    </configuration>
  3. 浏览访问 nodejs 项目网站。
    一般 nodejs 项目都是后端接口程序,那么此时你可以尝试在客户端请求自己的接口了。

  4. 设置 nodejs 项目文件夹的用户读写权限,找到电脑用户管理,找到一个包含 iis 字样的用户,编辑-把所有权限勾上,即可解决 iisnode 无法工作的问题。

常见问题

1、执行 iisnode 安装文件夹下的 setupsamples.bat 不成功。
如果在执行 setupsamples.bat 的过程中发生了错误并提示:ERROR<message:找不到带有标识符“Default Web Site/node”的APP对象。>,如下图所示:

这是因为 iis 默认创建的站点 Default Web Site 被删除了,重新创建一个名为 Default Web Site 的站点即可。

  1. 无法安装 URL Rewrite。
    在 URL Rewrite 的下载页面,点击“Install this extension”下载的安装程序可能会长时间停留在如下安装页面无法安装完成。

    可通过下载下方的安装程序进行安装,如下图所示:
  2. 修改代码中的监听端口号。
    由于 iis 部署站点时已经设置了端口号,因此代码中监听端口的语句可进行优化修改,如将

server.listen(3000)修改为server.listen(process.env.PORT || 3000)

process.env.PORT:读取当前目录下环境变量 port 的值。

  1. web.config 里的启动项目入口文件,必须在项目根目录里,比如我的是”/main.js”不能是’bin/main.js’

综合参考了如下资料,在此表示感谢!
nodejs 部署到 iis,详解 iis 如何部署运行 nodejs
记录一次使用 iisnode 部署 node 项目遇到的坑!




如果你遇到了前端难题,或者需要一对一帮扶服务,请到淘宝搜索店铺:前端在线或扫下面二维码

  转载规则


《iis10 管理 nodejs 服务》宋宇采用知识共享署名 4.0 国际许可协议进行许可。
 上一篇
iis10开启ftp服务iis10开启ftp服务
Linux 系统使用 xshll 管理,当然,前阵子用了一段 FinalShell,国人开发的,免费且强大,但是,我还是使用傻瓜式的图形化软件,刚好服务器是 window2016,使用 ftp 再好不过了。 忽然发现网上很多 ftp 教程那
2021-06-12
下一篇 
mongodb4.2布置window server 2016mongodb4.2布置window server 2016
记录 mongodb4.2 布置 window server 2016 服务器上的步骤。 1、服务器到期,换云,腾讯云。 2、mongodb 下载社区版双击安装,浏览器地址输入 localhost:27017 见 It looks
2021-06-10
  目录