• crossplatform---Nodejs in Visual Studio Code 08.IIS


    1.开始

      本文部分内容均转载自文章:

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

    https://github.com/tjanczuk/iisnode

      作者:SCOTT HANSELMAN

      标题:Installing and Running node.js applications within IIS on Windows - Are you mad?

      发布日期:2011.08.28

    2.为什么我要在Windows IIS上运行Node.js

      首先,我主要编写的是Asp.Net应用程序,对windows和iis很熟悉,如果在使用Node.js生产的应用如果能部署在IIS上,那么我想很快就能将Node.js开发的应用发布在生产环境中。

      虽然在IIS运行Node.js上并不是最优选择,但是我主要开发企业级应用,单机并发访问量3K、4K足矣并不如大型互联网企业那样会遇到极大的并发、调优压力。

      最后微软有一帮人正在IIS上玩转Node.js,我表示跟着入坑试一试。

    • 进程管理:iisnode模块将会对node.exe进行简单而暴力的全生命周期的进程管理来增强其可靠性。你不必担心何时开启、结束node.exe,或者开着软件监控node.exe的运行状态。
    • 多核服务器的可扩展性:node.exe是一个单进程运行的程序,你需要额外编写基础设施代码来扩展其支持多核服务器,如果使用iisnode,你无须编写代码,将可以配置打开多个进程的node.exe,同时将HTTP请求均衡的负载到多个node.exe上。
    • 自动更新:iisnode将会监视js文件,如果有任何更新将会自动回收并重启node.exe加载新的js代码,你不必担心正在执行的http请求,因为这些请求将会仍然使用旧版本的js直至执行完毕。
    • HTTP访问日志:iisnode将会把HTTP请求中调用console.log输出的内存存储在output中,这些输出内容对于调试远程服务器来说是很重要的资源。
    • 混合开发:iisnode是IIS的一个模块而已,你在一个站点中可以包含node.js、php、asp.net等多个应用程序。
    • 少量的代码修改:为了将node.js程序部署在IIS中你还是需要修改一下node.js代码的,比如process.env.PORT
    • 集成管理经验:iisnode是IIS的一个模块,你可以用到IIS的一些特点如下
      • 端口共享,你可以在80端口下部署多个不同的应用asp.net、node.js、php啊,爱谁谁。
      • HTTPS支持
      • Url rewriting
      • 压缩
      • 缓存
      • 日志

    3.如何在IIS上运行Node.js

    • 环境要求
      • Windows Vista, Windows 7, Windows 8, Windows Server 2008, or Windows Server 2012
      • IIS 7.x with IIS Management Tools and ASP.NET
      • WebSocket functionality requires IIS 8.x on Windows 8 or Windows Server 2012
      • URL rewrite module for IIS
        • (Win10:https://www.microsoft.com/en-us/download/details.aspx?id=47337)
      • Latest node.js build for Windows
    • 为IIS7.x/8.x安装iisnode扩展
      • 为 IIS 7.x/8.x 安装 iisnode : x86 或 x64 - 取决于你的操作系统
      • 安装示例, 以管理员权限打开CMD执行 %programfiles%iisnodesetupsamples.bat
      • 浏览 http://localhost/node

    4.学习iisnode

      通过上面安装node示例,查看示例发现iis下新增了一个node目录。

         这个node目录运行在DefaultAppPool中(.Net 4.0集成)

      打开Express示例的文件夹,包括以下内容

      在Hello.js中定义了两个不同的接口myapp/foo、myapp/bar

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var express = require('express');
     
    var app = express.createServer();
     
    app.get('/node/express/myapp/foo'function (req, res) {
        res.send('Hello from foo! [express sample]');
    });
     
    app.get('/node/express/myapp/bar'function (req, res) {
        res.send('Hello from bar! [express sample]');
    });
     
    app.listen(process.env.PORT);

      在Web.Config中指定了,Hello.js作为入口函数,同时将myapp/*请求映射给hello.js执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <configuration>
      <system.webServer>
     
        <!-- indicates that the hello.js file is a node.js application
        to be handled by the iisnode module -->
     
        <handlers>
          <add name="iisnode" path="hello.js" verb="*" modules="iisnode" />
        </handlers>
     
        <!-- use URL rewriting to redirect the entire branch of the URL namespace
        to hello.js node.js application; for example, the following URLs will
        all be handled by hello.js:
         
            http://localhost/node/express/myapp/foo
            http://localhost/node/express/myapp/bar
             
        -->
     
        <rewrite>
          <rules>
            <rule name="myapp">
              <match url="myapp/*" />
              <action type="Rewrite" url="hello.js" />
            </rule>
          </rules>
        </rewrite>
         
      </system.webServer>
    </configuration>

      打开示例页http://localhost/node/express/readme.htm进一步查看调用情况

      最后打开Chrome浏览器,输入http://localhost/node/express/hello.js/debug,可以远程调试服务,真乃神器也。。

    5.总结

      node.js + express即可以快速开发RestAPI和模版站点,又可以在iis中进行部署,远程调试,可以满足项目需要。

      以下内容参考:Debugger Don't work https://github.com/tjanczuk/iisnode/issues/396

      由于IIS7.X不支持WebSockets所以无法使用最新的远程调试器,但是可以通过配置旧的远程调试器(

    1
    <iisnode debuggerExtensionDll="iisnode-inspector.dll" />

    )来支持IIS7.X,仅需要修改一下Web.Config配置,如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <configuration>
      <system.webServer>
     
        <!-- indicates that the hello.js file is a node.js application
        to be handled by the iisnode module -->
     
        <handlers>
          <add name="iisnode" path="hello.js" verb="*" modules="iisnode" />
        </handlers>
     
        <!-- use URL rewriting to redirect the entire branch of the URL namespace
        to hello.js node.js application; for example, the following URLs will
        all be handled by hello.js:
         
            http://localhost/node/express/myapp/foo
            http://localhost/node/express/myapp/bar
             
        -->
     
        <rewrite>
          <rules>
            <rule name="myapp">
              <match url="myapp/*" />
              <action type="Rewrite" url="hello.js" />
            </rule>
          </rules>
        </rewrite>
        <iisnode debuggerExtensionDll="iisnode-inspector.dll" />
      </system.webServer>
    </configuration>

      旧调试器就是丑点。。

    http://www.cnblogs.com/mengkzhaoyun/p/5410185.html

  • 相关阅读:
    微信小程序tab(swiper)切换
    微信小程序如何动态增删class类名
    Vi (Unix及Linux系统下标准的编辑器)VIM (Unix及类Unix系统文本编辑器)
    js 阻止事件冒泡和默认行为 preventDefault、stopPropagation、return false
    H5中的touch事件
    CSS3 Gradient 渐变
    CSS3动画属性Transform解读
    你所不知的 CSS ::before 和 ::after 伪元素用法
    javascript移动设备Web开发中对touch事件的封装实例
    那些过目不忘的H5页面
  • 原文地址:https://www.cnblogs.com/auh2010006/p/5716985.html
Copyright © 2020-2023  润新知