Nano Server 上的 IIS 简介

作者:David So

兼容性

版本 说明
IIS 10.0 本文中所述的功能在 IIS 10.0 中引入
IIS 8.5 和更低版本 在 IIS 10.0 之前,本文中所述的功能不受支持

Nano Server

Nano Server 是 Windows Server 2016 中一个令人兴奋的新安装选项。

下面这段话摘自“通过 Nano Server 指南开始操作”,对 Nano Server 进行了很好的总结:

“Nano Server 是针对私有云和数据中心进行优化的远程管理的服务器操作系统。 它类似于服务器核心模式中的 Windows Server,但显著变小,无本地登录功能,且仅支持 64 位应用程序、工具和代理。 其所需的磁盘空间更小,启动速度明显更快,且所需的更新和重启操作远远少于 Windows Server。 当它未重新启动时,则可以更快地重新启动。”

因此,Nano 在磁盘上要小得多。 加快决策速度。 重启更少。 使用更少的内存。 为什么不喜欢它呢? :)

Nano Server 上的 IIS

随着 Windows Server 2016 的发布,我们很高兴地宣布,IIS 现已作为 Nano Server 中的角色提供,供所有人试用。由于内存较小且磁盘占用量明显较小,Web 工作负载特别适合在 Nano Server 上运行(尤其适用于高密度托管)。

使用入门

但实质上,创建 Nano Server vhd(x) 的最常用方法是通过 New-NanoServerImage cmdlet。

若要启用 IIS,只需将 Microsoft-NanoServer-IIS-Package 作为自变量传递给 Packages 参数即可。 例如,

New-NanoServerImage -MediaPath f:\ -BasePath .\Base -TargetPath .\Nano1.vhd -GuestDrivers -Packages Microsoft-NanoServer-IIS-Package

Nano 和常规服务器上的 IIS 之间的主要差异

安装

我们在适用于 Nano 的 IIS 中进行了大量更改,以支持联机和脱机安装。 “联机”指计算机“正在运行”时(我们不是指网络连接意义上的联机),而“脱机”指计算机未运行时。

过去,在常规服务器上,IIS 只能在线安装(计算机正在运行)。 使用 IIS 准备计算机时,通常遵循如下顺序:

  1. 安装 OS
  2. 等待安装完成
  3. 启用 IIS 角色
  4. 等待 IIS 角色完成
  5. 配置设置 - 例如身份验证设置、模块、Asp.Net

使用 Nano Server,可脱机预配设置,从而大幅简化和加快上述 1 到 4 步骤的速度。

使用 New-NanoServerImage 通过 Microsoft-NanoServer-IIS-Package 创建 vhd(x) 时,配置 IIS 的默认工作安装

  • 已安装 IIS 服务(例如 WAS、W3SVC)

  • 已启用默认的 IIS 子功能集,例如默认文档、静态内容、HTTP 日志记录等。

    • 请参阅默认对其启用子功能的图表
  • 已对默认 80/443 端口启用防火墙规则

使用已内置了 IIS 的生成的 vhd(x) 映像时,预配新的 Web 服务器计算机变得非常快。 在 Office 桌面计算机上,我能够在大约 25 秒内创建新的 VM、执行脱机专用化、启动并处理 Web 请求。 尝试使用 Server Core 执行相同的操作所花费的时间是上述时间的很多倍。

配置

配置 IIS 子功能(如身份验证和日志记录)目前仍是一个仅联机步骤(与常规服务器相同)。

在常规服务器上,可通过 DISM 命令(例如 dism /online /enable-feature /all /featurename:IIS-WindowsAuthentication)启用/禁用 IIS 子功能。

在 Windows Server 2016 Technical Preview 中,通过 DISM 配置 IIS 子功能不可用,需要更多工作(因此,Technical Preview....)这绝对是我们正在研究改进的领域。

目前,可使用 PowerShell 命令启用/禁用相应的模块,也可以编辑 applicationHost.config。有关详细信息,请参阅 IIS Nano 文档

该图表还显示了截至最新 Technical Preview,Nano 中可用的 IIS 子功能。 这些标有 * 的功能只是显示默认启用的功能(未标有 * 的功能仍然可用,但只需启用)。

支持的框架

ASP.NET Core

Nano 和常规服务器之间的最显著区别是 Nano 面向 Asp.Net Core(以前称为 Asp.Net 5)。 经典 Asp 不会在 Nano 上运行,完整的 .Net Framework 应用程序也不会运行,例如 Asp.Net <=4。

下面是我的有关如何在 Nano 上使用 IIS 运行 Asp.Net Core 应用程序的博客文章

Java

Java 应用程序可通过 HttpPlatformHandler 在 IIS 上托管。

我的同事 Jeong Hwan 在此处发布了一篇博客文章,有关如何在 Nano 上使用 IIS 让 Java 正常工作

其他

尽管我们确实计划获取支持其他平台,但在 IIS Nano 上支持 ASP.NET Core 和 Java 是一个很好的开端。 HttpPlatformHandler 是一个常规用途模块,用于管理请求并向 http 侦听器发送请求,因此,很可能有更多的平台可在 Nano 上运行良好,但我们尚未进行测试,因此没有列出。

如果你真的尝试了(例如使用 Ruby 或 Node)并使其正常工作,请告知我们!

管理

Nano Server 是一种“无外设”OS - 服务器本身没有 GUI。 PowerShell 是 Nano 管理体验的前沿和中心。 当然,这意味着你将能够使用 IIS PowerShell cmdlet 在 Nano 上管理 IIS。

我应该澄清一下,从 IIS 10.0 起,有 2 个 IIS PowerShell 模块:

Nano Server 是一个面向未来的干净服务器平台,因此,我们目前没有计划包括旧的旧版 WebAdministration 模块。 而是提供新的 IISAdministration 模块。

除了 PowerShell (IISAdministration),使用 appcmd.exe 管理 IIS 也是一个选择。