作者 :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 入门”步骤开始
IIS Nano 文档可以在 https://technet.microsoft.com/library/mt627783.aspx 中找到。
- 还可以通过“Nano Server 入门”左侧的树菜单访问它
有关如何在 Nano 上安装 IIS 的详细信息,请参阅上面的链接。
但实质上,创建 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 准备计算机时,通常遵循如下顺序:
- 安装 OS
- 等待安装完成
- 启用 IIS 角色
- 等待 IIS 角色完成
- 配置设置 - 例如身份验证设置、模块、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 模块:
- 较旧的 WebAdministration 模块
- 新的 IISAdministration 模块
Nano Server 是一个面向未来的干净服务器平台,因此我们目前没有计划包括旧版 WebAdministration 模块。 而是提供新的 IISAdministration 模块。
除了 PowerShell(IISAdministration),使用 appcmd.exe 管理 IIS 也是一个选项。