首页 / 资讯中心 / 文章详情

Windows Server 2012 R2 离线安装 IIS 8.5 完整指南:SxS 源配置与避坑

Windows Server 2012 R2 离线安装 IIS 8.5 完整指南:SxS 源配置与避坑 ★ FEATURED ARTICLE
简介这份离线安装包面向需要在无外网环境中为 Windows Server 2012 R2 部署或更新 IIS 的 IT 管理员与运维人员解决内网、隔离机房或严格网络安全策略下无法在线拉取系统组件的问题。压缩包共 1568 个文件约 99.04MB以 dll 动态库、resx 资源文件、exe 可执行程序为主辅以 aspx 页面、config 配置、sql 脚本、browser 浏览器定义及 tlb、targets 等组件描述文件完整覆盖 IIS 角色与 Side-by-Side 系统组件存储所需内容。已有 572 人学习下载说明其在离线部署场景中具备一定参考价值。包内组件可用于通过 DISM 命令添加 IIS 角色与功能并支持安装后核验服务状态帮助读者在断网条件下完成 Web 服务器搭建、应用程序池与身份验证配置等基础运维工作减少对在线源的依赖。1. 离线装 IIS 这件事版本对不上比不会装更折磨人上周帮一个做内网项目的朋友处理一台 Windows Server 2012 R2机器在机房里没有外网连微软的源都摸不到。他要在上面跑一个老系统必须开 IIS结果在服务器管理器里点“添加角色和功能”进度条卡在“正在搜索安装源”半天不动最后弹一句“找不到源文件”。这就是典型的离线环境装 IIS 翻车现场——图形界面看着友好实际上它默认要去拉在线源离线机器上根本走不通。Windows Server 2012 R2 这个版本现在还有大量存量设备在跑尤其是内网、工控、老旧业务系统IIS 离线安装包也就是Sources\SxS目录那一套几乎是运维必备的救命稻草。这篇笔记就是把我自己反复装过的那套流程拆开写清楚装什么、怎么挂源、参数怎么指、装完怎么验证、坏了怎么救。适合两类人——第一次在离线机上开 IIS 的新手以及被“找不到源文件”折磨过、想搞清楚 SxS 到底怎么用的熟手。2. 装前把环境盘清楚版本、源和依赖一个都不能错离线装 IIS 最容易出问题的地方不在安装动作本身而在装之前的准备。很多人拿到一个“IIS 离线安装包”就直接双击结果要么报错要么装到一半缺组件。这一章先把环境要求、源目录结构和依赖关系讲透后面动手才不会返工。2.1 确认系统版本和 IIS 版本对应关系Windows Server 2012 R2 对应的是 IIS 8.5这个必须记牢。IIS 的版本是跟系统绑死的不存在“装个更高版本”的说法。你在 2012 R2 上能装的只有 8.5功能集也是这个版本定死的。常见误区是有人拿 Windows Server 2016 的 SxS 目录往 2012 R2 上怼结果安装程序能跑但角色服务列表对不上装完 IIS 管理器打不开。先确认系统版本用命令行最稳# 查看系统版本和内部版本号 systeminfo | findstr /B /C:OS Name /C:OS Version # 或者用 wmic 看更细的版本 wmic os get Caption,Version,BuildNumber /value输出里OS Version: 6.3.9600就是 2012 R2 的标志6.3 是 R26.2 是 2012 原版。这一步别省我见过有人把 2012 原版当 R2 处理SxS 源挂上去后角色安装报“源文件版本不匹配”排查了半天才发现系统版本搞错了。版本确认之后还要确认系统是标准版还是数据中心版。这两个版本在 IIS 功能上没有差别但如果你后续要装一些依赖 .NET 或远程管理的组件授权层面会有区别。离线安装本身不受影响但心里要有数。2.2 离线源目录长什么样SxS 到底放哪所谓“IIS 离线安装包”核心就是系统安装介质里的Sources\SxS目录。这个目录里放的是所有按需功能Features on Demand的源文件IIS 的角色服务在离线安装时就是从这里取组件。完整的离线源结构大致是这样路径内容作用Sources\SxS\按需功能源文件.cab 等IIS 角色安装时取组件Sources\sxs\microsoft-windows-iis-*IIS 相关组件包对应各角色服务安装介质根目录install.wim等系统镜像本体一般不用动关键点SxS 目录必须完整不能只拷一部分。有些人图省事只复制了microsoft-windows-iis开头的几个包结果装到“应用程序开发”这类角色服务时就报缺源。我一般建议直接把整个Sources\SxS目录原样拷到目标机器上比如放到D:\OfflineSource\SxS路径里不要有中文和空格这是血泪经验——带空格的路径在某些 PowerShell 命令里会被拆开解析。如果你手上没有系统安装介质另一个常见做法是从同版本、同补丁级别的机器上把C:\Windows\WinSxS里对应的组件提取出来但这个操作复杂且容易出错不推荐新手碰。最稳的还是找一份同版本的 ISO挂载后取Sources\SxS。2.3 依赖组件和前置条件清单IIS 不是孤立装的它依赖几个系统层面的东西。离线环境下这些依赖如果没提前准备好安装会中途失败。装之前对照下面这张表过一遍依赖项是否必须检查方式离线处理.NET Framework 3.5部分角色服务需要服务器管理器功能列表需单独离线源.NET Framework 4.5ASP.NET 4.5 角色需要注册表或命令行2012 R2 自带 4.5远程管理组件需要远程管理时功能列表SxS 内包含管理工具IIS 管理器建议装角色服务勾选项SxS 内包含.NET Framework 3.5 是个高频坑。2012 R2 默认没启用 3.5而 IIS 的 ASP.NET 3.5 角色服务依赖它。离线环境下启用 3.5 需要单独指定源命令和装 IIS 类似都是指向 SxS。如果你不需要跑老版 ASP.NET 应用可以不装这个角色服务能省不少事。提示装之前先把系统补丁打到和目标环境一致的水平。补丁级别不一致时SxS 里的组件版本可能和系统现有组件对不上安装会报“组件存储损坏”之类的错。3. 两种装法落地图形界面挂源和命令行指定 SxS环境盘清楚之后真正动手装 IIS 有两条路图形界面的服务器管理器和命令行的 DISM / PowerShell。图形界面直观但离线挂源稍微绕命令行干脆利落但参数要记准。两条路我都走过下面分别写清楚你按自己的习惯选。3.1 图形界面装法指定备用源路径的正确姿势服务器管理器里装 IIS 的入口是“添加角色和功能”。离线环境下走到“确认安装所选内容”那一步时会看到一个“指定备用源路径”的链接点开填 SxS 路径。这一步是图形界面装法的关键填错了就报“找不到源文件”。完整步骤打开服务器管理器点“添加角色和功能”一路下一步到“服务器角色”。勾选“Web 服务器 (IIS)”弹窗提示添加所需功能点“添加功能”。继续下一步到“角色服务”按需勾选。新手建议先只勾默认项装通了再补。到“确认”页点“指定备用源路径”填入D:\OfflineSource\SxS换成你的实际路径。点“安装”观察进度。这里有个细节很多人忽略备用源路径填的必须是 SxS 目录本身不是它的上级目录。填D:\OfflineSource会失败必须填到D:\OfflineSource\SxS。另外路径末尾不要加反斜杠加了在某些版本上会解析异常。图形界面装法的好处是角色服务勾选直观坏处是出错时提示信息很含糊就一句“找不到源文件”不告诉你缺哪个包。所以如果你勾了很多角色服务建议分批装先装核心的验证通过再补开发类组件。3.2 命令行装法DISM 指定 Source 参数命令行装法我更常用因为参数明确、日志可查、适合批量。核心命令是 DISM 启用 IIS 相关功能并用/Source指定 SxS 路径。先看一个装核心 IIS 功能的例子# 启用 IIS-WebServerRole 及核心子功能指定离线源 dism /online /enable-feature /featurename:IIS-WebServerRole /featurename:IIS-WebServer /featurename:IIS-CommonHttpFeatures /featurename:IIS-StaticContent /featurename:IIS-DefaultDocument /featurename:IIS-HttpErrors /Source:D:\OfflineSource\SxS /All逐段说明/online表示操作当前运行的系统/enable-feature后面跟功能名可以一次跟多个/Source:指向 SxS 目录/All表示如果父功能需要也一并启用。功能名必须用系统认的英文名写错了会报“功能名称未知”。功能名从哪来用下面这条命令列出所有 IIS 相关功能# 列出名称含 IIS 的所有功能及其状态 dism /online /get-features | findstr /I IIS输出里每个功能都有“功能名称”和“状态”。状态是“已启用”的不用管是“已禁用”的按需启用。我一般会先跑这条命令把要装的功能名抄下来再拼到 enable 命令里避免手打出错。如果你更习惯 PowerShell等价写法是# 用 PowerShell 启用 IIS 核心功能指定离线源 Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole, IIS-WebServer, IIS-CommonHttpFeatures -Source D:\OfflineSource\SxS -AllPowerShell 的好处是功能名可以用数组一次传多个读起来清楚。注意-Source参数同样要指到 SxS 目录-All对应 DISM 的/All。3.3 角色服务怎么选按业务需求分批装IIS 的角色服务有几十个全勾上没必要还容易因为某个包缺失导致整体失败。我的做法是按业务需求分三批第一批是核心 Web 服务必装IIS-WebServerRole、IIS-WebServer、IIS-CommonHttpFeatures、IIS-StaticContent、IIS-DefaultDocument、IIS-HttpErrors、IIS-HttpLogging、IIS-RequestMonitor。这批装完静态站点就能跑。第二批是管理工具IIS-ManagementConsole、IIS-ManagementService。装完才能在图形界面里管 IIS不然只能用命令行。第三批按应用类型补跑 ASP.NET 4.5 加IIS-ASPNET45跑 ASP.NET 3.5 加IIS-ASPNET并先启用 .NET 3.5需要 URL 重写、压缩、认证的再单独加对应功能。分批装的好处是每批装完可以立刻验证出问题能快速定位是哪一批的包缺失。一次性全勾然后失败排查起来就是黑匣子。注意IIS-ManagementService启用后还要单独启动 WMSVC 服务并配置远程管理凭据否则远程连不上。这一步离线环境同样不需要外网但容易被漏掉。4. 避坑与排查离线装 IIS 最常见的五个翻车点装 IIS 离线版报错信息往往很吝啬就一句“找不到源文件”或者“组件存储损坏”不告诉你具体缺什么。这一章把我踩过的、帮别人排查过的五个高频坑按“现象 → 原因 → 解决”列清楚遇到问题先对照这里。4.1 现象安装卡在“正在搜索安装源”后报找不到源文件原因图形界面没指定备用源路径或者路径填错。默认情况下服务器管理器会尝试在线源离线机器上必然失败。解决回到“确认”页点“指定备用源路径”确认填的是 SxS 目录本身路径无中文无空格末尾不加反斜杠。如果已经点了安装才想起来取消后重新走一遍备用源路径在重新安装时还能填。4.2 现象DISM 报“源文件版本与系统版本不匹配”原因SxS 目录来自不同版本或不同补丁级别的系统。比如拿 2012 原版的 SxS 往 2012 R2 上用或者补丁级别差太多。解决换一份与目标系统同版本、同补丁级别的安装介质重新提取 SxS。确认方法是用systeminfo看目标机版本和提供 SxS 的源机版本对比OS Version和补丁列表都要对得上。4.3 现象装 ASP.NET 3.5 角色时报缺 .NET Framework 3.5 源原因2012 R2 默认未启用 .NET 3.5而 IIS 的 ASP.NET 3.5 角色依赖它。离线环境下启用 3.5 需要单独指定源。解决先用 DISM 启用 .NET 3.5 并指向 SxS# 离线启用 .NET Framework 3.5源指向 SxS dism /online /enable-feature /featurename:NetFx3 /Source:D:\OfflineSource\SxS /All启用成功后再装 IIS 的 ASP.NET 3.5 角色服务。顺序不能反反了会报依赖缺失。4.4 现象IIS 装完管理器打不开提示 MMC 管理单元错误原因管理工具角色服务没装全或者IIS-ManagementConsole装了但相关依赖缺失。常见于只装了核心 Web 服务就以为完事的情况。解决补装IIS-ManagementConsole和IIS-ManagementService用 DISM 指定同一 SxS 源。装完重启服务器管理器或者直接运行inetmgr验证。4.5 现象站点能建但访问 500日志里报模块加载失败原因应用需要的角色服务没装比如跑 ASP.NET 应用但没装IIS-ASPNET45或者需要 URL 重写但没装对应模块。解决看 IIS 日志里具体报哪个模块对照功能名补装。日志默认在C:\inetpub\logs\LogFiles错误信息里会带模块名。补装时同样指定 SxS 源装完iisreset重启 IIS。5. 装完怎么验证三条命令确认 IIS 真的跑通了装完不验证等于没装。离线环境没有外网不能靠访问外部页面判断得用本地手段确认。我一般走三步查功能状态、查服务、查本地站点响应。三步都过才算真跑通。5.1 查功能状态和服务状态先确认功能确实启用了不是“装了一半”# 查看 IIS 核心功能状态确认都是 Enabled dism /online /get-featureinfo /featurename:IIS-WebServerRole | findstr /I State # 查看 W3SVC 服务状态 sc query W3SVCState显示Enabled说明功能启用成功。sc query W3SVC里STATE是RUNNING说明万维网发布服务在跑。如果服务没起来先net start W3SVC手动启动起不来就看事件查看器里的应用程序日志通常是组件缺失或配置损坏。5.2 本地访问默认站点验证IIS 装完会自带一个默认站点监听 80 端口。在服务器本机用浏览器或命令行访问http://localhost能看到 IIS 欢迎页就说明静态内容服务正常。命令行验证更干脆# 本地请求默认站点看返回状态码 Invoke-WebRequest -Uri http://localhost -UseBasicParsing | Select-Object StatusCode, StatusDescription返回StatusCode: 200就是通的。如果返回 404检查默认站点是否启动、物理路径C:\inetpub\wwwroot是否存在。如果连接被拒多半是 W3SVC 没跑或防火墙拦了本地回环本地回环一般不受防火墙影响所以优先查服务。5.3 建一个测试页确认动态能力静态页通了只说明核心服务正常如果你装了 ASP.NET 或其他动态角色还得验证动态处理。在C:\inetpub\wwwroot下放一个测试页!-- test.aspx放在 wwwroot 下 -- % Page LanguageC# % htmlbodyh1IIS 离线安装验证通过/h1/body/html然后访问http://localhost/test.aspx。能正常渲染说明 ASP.NET 角色服务装对了。如果报 500.21处理器未安装说明IIS-ASPNET45没装或没注册补装后运行%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i注册。验证这一步我吃过亏。有一次装完核心服务就交付了结果对方跑 ASP.NET 应用直接 500回头补装角色服务又得重新挂源。从那以后我每次装完 IIS都强制走一遍“功能状态 → 服务 → 静态页 → 动态页”四步一步不落。离线环境尤其如此现场没有外网返工成本比在线环境高得多。希望这套流程帮到你少在“找不到源文件”上耗时间。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站