新闻详情

新闻详情

首页 / 资讯中心 / 详情

Windows Server 2012 R2离线安装IIS:DISM与SxS源详解

发布时间:2026/9/25 4:48:48来源:尧图网络
Windows Server 2012 R2离线安装IIS:DISM与SxS源详解
简介面向Windows Server 2012 R2生产环境运维人员与管理员的IIS离线部署包可在无互联网或受限网络条件下通过DISM命令完整添加Web服务器角色。包体为ZIP压缩格式共1568个文件、约99MB内部以dll运行库、exe可执行组件、config配置及aspx管理页面等为主要类型其中dll与exe构成IIS核心运行组件config承载站点与模块配置aspx等支撑Web管理界面同时包含SxS组件存储目录保证离线安装时依赖项完整。已有571人学习下载适合数据中心、内网隔离环境及网络安全管控严格的企业场景。借助该包可告别逐一下载快速完成IIS安装与更新并覆盖身份验证、应用程序池、FTP等常用模块的组件支持为后续Web应用托管与站点安全管理奠定基础。1. 先纠正一个概念Windows Server 2012 R2 的 IIS 没有 exe 安装包内网服务器要装 IIS手头没有外网从 U 盘拷进去一个“离线安装包”双击后却只看到一闪而过的命令行窗口——这是很多人第一次接触 Windows Server 2012 R2 离线装 IIS 时遇到的困惑。真相是IIS 8.5 是系统内置的 Windows 功能Feature不是独立发布的软件包所谓的离线安装包在 2012 R2 上指的是Sources\SxS目录下那批 CAB 文件。只要你把源文件准备对用 DISM 一条命令就能在断网环境下把 IIS 完整拉起来而且比图形界面的“添加角色和功能”更可控。这篇文章就是为无外网的生产服务器、等保内网、以及需要在老系统上快速复现 ASP.NET 环境的运维准备的。2. 准备 IIS 离线安装源从 ISO 的 sxs 目录取出全部 CAB 的三个步骤2.1 先搞清 sxs 里到底有什么版本语言为什么不能混Windows Server 2012 R2 的安装介质中Sources\SxS目录保存了几乎所有可选功能的 CAB 包和 manifest 清单文件。IIS 相关的文件包括一串microsoft-windows-iis-*-x64.cab以及描述功能依赖关系的update.mum。功能安装引擎工作时会按 manifest 记录的哈希和版本信息从该目录寻找匹配文件再复制到系统组件存储中完成安装。这里最容易翻车的是版本和语言不匹配。简体中文系统必须配简体中文镜像的 SxS英文镜像的 CAB 里嵌的是英文资源强行指定路径通常直接报0x800f081e源文件找不到。同理2012 R2 原始版和带 Update 版的镜像里 IIS 功能文件版本也不同目标系统补丁打得越新越需要用对应版本的镜像。我一般直接在服务器上放一个 2012 R2 with Update 的 ISO后续补丁另说至少安装阶段不会因为源文件版本过旧而失败。准备源目录前可以先简单验证一下解压或挂载 ISO 后确认sources\sxs下能找到microsoft-windows-iis-开头的 CAB且还有update.mum目录体积在 300 MB 到 600 MB 之间基本就对了。2.2 挂载 ISO 并导出 sxs最稳妥的做法是 PowerShell 命令在 Windows Server 2012 R2 上不需要额外装虚拟光驱软件系统自带Mount-DiskImage。下面这段脚本把 ISO 以只读方式挂载自动识别盘符再把 sxs 整个目录复制到本地# 以管理员身份运行 PowerShell $img Mount-DiskImage -ImagePath D:\ISO\cn_windows_server_2012_r2_with_update_x64_dvd_6052729.iso -Access ReadOnly -PassThru $letter ($img | Get-Volume).DriveLetter Write-Host ISO mounted at ${letter}: Copy-Item ${letter}:\sources\sxs C:\IISSources -Recurse -Force Dismount-DiskImage -ImagePath $img.ImagePath逻辑说明-Access ReadOnly确保挂载时不会尝试写入 ISO避免损坏镜像-PassThru让Mount-DiskImage返回磁盘对象才能接着用Get-Volume取出盘符。复制源文件时用-Recurse把 sxs 下的所有子目录一起带上因为部分 CAB 会按体系结构分目录存放。如果你更习惯在普通 Windows 机器上处理镜像用 7-Zip 解压也可以只提取需要的路径避免解开庞大的 install.wim7z.exe x D:\ISO\cn_windows_server_2012_r2_with_update_x64_dvd_6052729.iso sources\sxs\* -oC:\IISSources参数说明-o后面紧跟输出目录不要加空格sources\sxs\*是通配整目录。这一步会解出C:\IISSources\sxs完整目录。两种方法选一个即可我的个人习惯是优先用挂载ISO 可以继续留给后续安装 .NET 3.5 或做组件修复用。2.3 从另一台服务器复制 WinSxS 的备用方案为什么不推荐有一种应急做法是在同版本同语言的服务器上从C:\Windows\WinSxS里手工找 IIS 相关的 CAB 拼出一个源目录。听着可行实际很坑目标机器的补丁级别略有不同DISM 校验 manifest 时就会报错而且 WinSxS 里的文件处于组件存储管理之下手工复制容易漏文件、抄错版本后面排查起来纯属玄学。我的建议是只在没有 ISO 且服务器已断网的极端情况下采用并且要做好心理准备复制出来的源可能只适用于功能启用后续打补丁或加子功能还会踩同样的坑。所以平时把对应版本的 ISO 丢内部文件服务器上比什么都管用。提示sxs 目录最好放在不带空格的路径下例如C:\IISSources\sxs。DISM 对路径中的空格处理虽然不至于报错但在某些组合参数下会出现源文件定位失败省这个心不亏。3. 用 DISM 离线启用 IIS特征名、source 与最小化功能组合3.1 装之前先查状态别等报错了才回头看2012 R2 上 IIS 的每一个子角色在 DISM 里都有一个内部特征名FeatureName。装之前把现有状态打出来能避免重复启用或漏掉关键依赖dism /online /get-features /format:table | findstr /i IIS在 cmd 下执行会看到类似IIS-WebServerRole、IIS-WebServer、IIS-ASPNET45、IIS-ManagementConsole等条目每条右边带State值要么是Enabled要么是Disabled。注意这里显示的IIS-WebServerRole才是角色总入口对应图形界面里的“Web 服务器 (IIS)”IIS-WebServer是它的核心服务两者不是同一个东西DISM 命令中要分清。提示2012 R2 的 IIS 是 8.5 版本。如果服务器是 Server Core 安装模式没有图形界面但 DISM 查询和启用功能的操作完全一样。3.2 最小化功能组合怎么选先看这张角色表离线环境下我一般不会把 IIS 的子功能全装完因为每个子功能都是一个攻击面和一个更新负担。表里是日常维护中最常用的特征名按需挑选特征名中文含义什么时候需要IIS-WebServerRoleWeb 服务器角色入口必选IIS-WebServerWeb 服务器核心服务必选IIS-CommonHttpFeatures常见 HTTP 功能必选IIS-StaticContent静态内容几乎所有站点IIS-DefaultDocument默认文档静态站、ASP.NET 都建议开IIS-HttpErrors错误页必选否则错误页配置异常IIS-HttpRedirectHTTP 重定向做整站跳转时IIS-ApplicationDevelopment应用程序开发跑 ASP 或 ISAPI 时IIS-ASPNET45ASP.NET 4.5跑 .NET 站点的核心IIS-NetFxExtensibility45.NET 扩展性WebService 等场景IIS-ISAPIFilterISAPI 筛选器老系统迁移时需要IIS-ISAPIExtensionsISAPI 扩展同上IIS-IPSecurityIP 地址和域限制做白名单时IIS-ManagementConsoleIIS 管理器完整桌面版一定要装如果你要跑 ASP.NET 3.5 的老应用还需要额外启用NetFx3.NET 3.5 功能它的源文件同样在这个 sxs 目录里但那是独立于 IIS 的另一个 Windows 功能安装命令要单独跑。列在这张表里是为了提醒你IIS 装完不代表 .NET 3.5 应用能跑那是两件事。3.3 离线启用主命令与参数核心就这一条准备好源目录后这是主力安装命令dism /online /enable-feature /featurename:IIS-WebServerRole /all /source:C:\IISSources\sxs /LimitAccess /NoRestart各参数含义/source指向我们准备好的 sxs 目录/LimitAccess表示只从指定源读取不碰 Windows Update这是离线安装的关键不加它 DISM 可能先尝试联网/all会把该功能所需的所有父功能和依赖项一并启用避免装完父功能缺失导致管理入口灰掉/NoRestart避免安装结束时自动重启适合批量任务。如果你需要同时启用多个子功能DISM 允许一条命令多次指定/featurenamedism /online /enable-feature /featurename:IIS-WebServerRole /featurename:IIS-WebServer /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent /featurename:IIS-DefaultDocument /featurename:IIS-HttpErrors /featurename:IIS-HttpRedirect /featurename:IIS-ApplicationDevelopment /featurename:IIS-ASPNET45 /featurename:IIS-NetFxExtensibility45 /featurename:IIS-ISAPIFilter /featurename:IIS-ISAPIExtensions /featurename:IIS-IPSSecurity /featurename:IIS-ManagementConsole /all /source:C:\IISSources\sxs /LimitAccess /NoRestart注意IIS-IPSecurity不要和IIS-Security混写前者是限制模块后者是安全功能入口。执行过程中会看到进度百分比最后出现“操作成功完成”即可。如果中途报错先记下错误码后面第 5 章逐个拆。3.4 验证安装结果两个命令确认状态命令跑完别急着建站点先验证功能确实生效dism /online /get-featureinfo /featurename:IIS-WebServerRole看输出末尾的State : Enabled。也可以用 PowerShell 快速核对Get-WindowsFeature Web-Server | Select-Object Name, DisplayName, InstallStateInstallState应为Installed。这里的Web-Server是图形界面显示名DISM 的IIS-WebServerRole是内部名两者指向同一功能。3.5 图形界面作为兜底Server Manager 的备用源路径如果你面前是完整桌面版也可以打开“服务器管理器 - 添加角色和功能”在“确认安装选项”页左下角点“指定备用源路径”填C:\IISSources\sxs。但老实说UI 方式在离线场景下更容易失败——如果你改了组策略里“指定 Windows 更新从何处搜索更新”UI 可能不会理会本地源。命令行反而干净利落所以我只在给客户演示或者教新人时才用 GUI 兜底生产环境一律 DISM。注意无论哪种方式安装完成后建议做一次完整的 Windows Update或内网补丁分发把 IIS 相关累积更新打齐再开始部署站点。4. 装完先调这四个地方多站点绑定、日志、重定向与安全收敛4.1 同一台服务器多个网站靠 Host 头区分不靠端口硬分2012 R2 的 IIS 默认站点是 80 端口如果你在上面挂多个业务系统不建议每个站都换一个端口而应该用“IP:端口:主机头”三元组做绑定。这样 80 端口可以复用域名不同即可正确路由。用 appcmd 添加一个站点%windir%\system32\inetsrv\appcmd.exe add site /name:demo /physicalPath:D:\www\demo /bindings:http/*:80:demo.local参数说明*表示监听所有网卡80是端口demo.local是 Host 头。域名解析在 DNS 或 hosts 文件里加 A 记录IIS 本身不做 DNS 解析不要在 IIS 里找域名解析设置那是 DNS 角色的活。只要 Host 头与请求一致IIS 就会把流量路由到对应站点请求没带 Host 头或匹配不到时会落到绑定顺序中的第一个站点这个行为在生产上经常被误解——所以每个站点的名称和物理路径尽量起得业务化别项目做完了还在用 “Default Web Site”。查看当前站点绑定列表%windir%\system32\inetsrv\appcmd.exe list site如果改绑定用set site时注意它会整体覆盖现有绑定列表多个绑定用逗号分隔别把原来的绑定冲掉。4.2 日志与轮转给 IIS 日志分析前的三个开关设对IIS 日志默认在%SystemDrive%\inetpub\logs\LogFiles每个站点单独一个W3SVC编号目录。平时做 IIS 日志分析遇到时间对不上、字段不齐多半是下面几个开关没设。建议站点上线时直接配好%windir%\system32\inetsrv\appcmd.exe set site demo /logFile.directory:D:\logs\demo /logFile.logFormat:W3C /logFile.period:Daily /logFile.localTimeRollover:true参数说明logFormat:W3C是标准扩展日志格式字段可控period:Daily按天切割单文件不会膨胀太快localTimeRollover:true让切割时间按本地时间算而不是默认的 UTC。很多日志分析报表凌晨数据错位就是没开这个开关。改完记得在“日志”页里勾选要记录的字段至少把cs-uri-stem、sc-status、cs(User-Agent)、cs(Referer)勾上不然后面做统计时发现字段缺失只能翻档重查没有后悔药。4.3 80 端口整站重定向 HTTPS内置模块与 URL Rewrite 的分工最常见的需求是访问 80 端口自动跳到 443。有两种做法。如果只是整站无条件跳转用 IIS 内置的 HTTP 重定向功能就够了%windir%\system32\inetsrv\appcmd.exe set config demo /section:httpRedirect /enabled:true /destination:https://demo.local$S$Q /exactDestination:false /childOnly:true这里$S保留原始路径$Q保留查询字符串childOnly:true只对当前站点子路径生效。这个方案简单但没法按路径区分跳转目标。更灵活的是 URL Rewrite 模块。注意它不是系统功能需要下载rewrite_2.1_amd64_en-US.msi离线包装完在站点 web.config 里加规则rewrite rules rule nameRedirect_http_to_https stopProcessingtrue match url(.*) / conditions add input{HTTPS} pattern^OFF$ / /conditions action typeRedirect urlhttps://{HTTP_HOST}/{R:1} appendQueryStringtrue redirectTypePermanent / /rule /rules /rewrite逻辑说明{HTTPS}为OFF说明当前是明文请求触发跳转{HTTP_HOST}保留原域名{R:1}是匹配到的路径。rewrite 模块适合同一台服务器上多个站点有各自不同的跳转规则时使用规则按站点隔离互不干扰。4.4 IP 白名单与关闭详细错误安全收敛两个开关内网业务系统经常要求“只允许办公网段访问”。2012 R2 自带 IP 和域限制功能。先确认装了IIS-IPSecurity然后按白名单模式配置%windir%\system32\inetsrv\appcmd.exe set config demo /section:ipSecurity /enabled:true /allowUnlisted:false %windir%\system32\inetsrv\appcmd.exe add config demo /section:ipSecurity /[ipAddress192.168.1.0,subnetMask255.255.255.0,allowedtrue]第一行把策略设为“未列出的全部拒绝”即白名单模式第二行加入允许网段。这里的allowedtrue表示这是允许规则注意与“拒绝规则”的顺序关系IIS 按列表顺序匹配先命中先生效。配置完成后白名单外的访问会收到 403.6。关闭详细错误信息也是生产环境常规操作。先在 IIS 层把错误模式设为只对本地显示详情%windir%\system32\inetsrv\appcmd.exe set config demo /section:httpErrors /errorMode:DetailedLocalOnly再在站点 web.config 里把 ASP.NET 层错误也收敛system.web customErrors modeRemoteOnly defaultRedirect/error.html / /system.web这样远程访问看不到堆栈和源码路径本地调试还能正常看。两层配置都要做只改一层另本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

美股与A股市场反应差异解析及套利策略 2026/9/25 7:40:23

美股与A股市场反应差异解析及套利策略

1. 市场反应差异现象解析最近观察到的一个有趣现象:某些行业利好或利空消息在美股市场快速反应后,A股市场往往需要延迟一段时间才会出现类似的价格变动。这种跨市场间的信息传导延迟,本质上反映了不同市场结构、参与者构成和交易机制带来的价…

阅读更多 →
AEME 2026国际学术会议:航空航天与机械工程前沿解析 2026/9/25 7:40:23

AEME 2026国际学术会议:航空航天与机械工程前沿解析

1. 会议背景与核心价值2026年航空航天工程与机械工程国际学术会议(AEME 2026)是南京航空航天大学主办的重量级行业盛会。作为在亚洲地区具有重要影响力的学术平台,这个会议已经连续举办多届,形成了稳定的学术交流传统。今年选址北…

阅读更多 →
Cadence Allegro与Altium Designer封装原理图对比 2026/9/25 7:40:23

Cadence Allegro与Altium Designer封装原理图对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AMS芯片设计从0.18um到55nm:工艺迁移中的模拟电路实战经验 2026/9/25 7:40:23

AMS芯片设计从0.18um到55nm:工艺迁移中的模拟电路实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
FreeRTOS在Proteus仿真STM32F103C8T6的踩坑实录:任务调度、SysTick与HardFault排查指南 2026/9/25 7:40:23

FreeRTOS在Proteus仿真STM32F103C8T6的踩坑实录:任务调度、SysTick与HardFault排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
PMOS管一键开关机电路设计:原理、参数计算与低功耗实战 2026/9/25 7:40:17

PMOS管一键开关机电路设计:原理、参数计算与低功耗实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉