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 参数即可。 e.g.

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

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

安装

我们在 IIS for Nano 中进行了大量更改,以支持联机和脱机安装。 通过“联机”,是指计算机“正在运行”(我们并不意味着在网络连接意义上处于联机状态),而“脱机”是指计算机未运行时。

历史上和在常规服务器上,IIS 只能在计算机处于运行状态时在线安装。 使用 IIS 准备计算机时,通常遵循如下顺序:

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

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

使用 New-NanoServerImage 和 Microsoft-NanoServer-IIS-软件包创建 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 子功能,需要更多的手动操作(因此称为技术预览版....)。这绝对是我们计划改进的领域。

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

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

支持的框架

ASP.NET Core

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

这是我的博客文章,关于如何使用 IIS 运行 Asp.Net Core 应用程序在 Nano 上。

Java

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

我的同事 Jeong Hwan 在此处发布了一篇博客文章 ,说明如何在 Nano 上让 Java 与 IIS 协同工作

其他

我们确实计划获得对其他平台的支持,而在 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 也是一个选项。