news 2026/10/8 15:03:14

Windows Server 2012 R2 IIS离线安装包制作与部署指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows Server 2012 R2 IIS离线安装包制作与部署指南

简介:本资源是专为Windows Server 2012 R2系统定制的IIS离线安装包,面向企业IT运维人员、系统管理员及无网络环境下的服务器部署工程师,解决内网隔离、安全策略严格或带宽受限场景下无法在线启用IIS角色的核心痛点。压缩包为ZIP格式,共1568个文件,主体包含720个DLL(核心运行时组件)、180个RESX(本地化资源)、84个EXE(部署与工具程序)及大量ASPX、CONFIG、SQL等Web服务配置与管理文件,完整覆盖IIS Web服务器、FTP服务、应用程序池、身份验证模块及Web Deploy部署能力,总大小99.04MB。已有571人学习下载,资源结构高度还原系统SxS组件存储机制,预览可见wizardpermission.ascx、providerlist.ascx等IIS管理界面控件,表明其具备完整的图形化配置支持能力,可直接用于生产环境角色添加、功能补全与灾备恢复。

1. Windows Server 2012 R2 IIS 离线安装包:不是“下载个exe就能装”,而是绕过Windows Update、跳过网络依赖、在无外网服务器上一气呵成部署Web服务的硬核方案

你手头有一台刚装好的 Windows Server 2012 R2——物理机、虚拟机、甚至某台被隔离在内网核心区域的业务前置服务器,它连不了公网,也禁用了 Windows Update,但偏偏要立刻跑起 ASP.NET 应用、部署内部管理系统、或者支撑一个 IIS 托管的静态门户。这时候搜“iis安装包”,弹出来的全是“打开服务器管理器→添加角色→勾选IIS→点下一步”——可那一步点击背后,系统正悄悄连微软更新源拉取 20+ 个 CAB 文件(如microsoft-windows-iis-webserver-cb1.cab)、校验数字签名、下载 .NET Framework 4.5 补丁、甚至触发 KB2919355 这类前置热补丁。一旦网络断开或策略拦截,安装直接卡死在“正在下载功能文件…”——进度条不动、日志没报错、任务管理器里只看到dism.exe占着 12% CPU 干耗 40 分钟。这不是玄学,是 Windows Server 2012 R2 的离线部署真实困境。本文讲的,就是如何把 IIS 所需全部组件提前打包、本地挂载、用 DISM 命令精准注入,不碰 Windows Update、不依赖在线源、不重启两次以上,让 IIS 在断网环境下 8 分钟内完成从零到可用。适合运维工程师、等保加固人员、工业控制网实施者,以及所有被“内网不能联网但必须上线 Web 服务”逼到墙角的人。

2. 为什么必须自己做离线包?Windows Server 2012 R2 的 IIS 安装机制决定了它天生不适合“即下即装”

2.1 IIS 不是独立软件,而是操作系统级功能模块:DISM + WIM + CAB 的三重依赖链

Windows Server 2012 R2 的 IIS 并非传统意义上的 MSI 安装包,它被深度集成进系统映像(WIM 文件)中,以“功能(Feature)”形式存在。官方安装路径(服务器管理器 → 添加角色和功能向导)底层调用的是 DISM(Deployment Image Servicing and Management)工具,其执行逻辑是:

  1. 读取当前系统C:\Windows\WinSxS目录下的组件清单;
  2. 对比所需功能(如IIS-WebServer,IIS-ASPNET45,IIS-ISAPIExtensions)是否已安装;
  3. 若缺失,则从 Windows Update 源或指定源(/Source参数)拉取对应.cab文件;
  4. 解压.cab中的.manifest、.cat、.dll等文件,注入WinSxS并注册服务。

关键点在于:所有.cab文件都带强签名,且版本严格绑定 SP1 更新后的系统 Build 号(9600.17050+)。网上随便下载的“iis离线安装包”往往混杂了 RTM 版(Build 9600.16384)或第三方打包的未签名 CAB,DISM 会直接报错0x80073701(错误:找不到所需组件),根本无法加载。这不是权限问题,是签名验证失败——Windows 的安全基线设计如此。

2.2 官方离线源唯一可信来源:Windows Server 2012 R2 with Update(ISO 镜像)

微软从未发布过单独的“IIS 离线安装包”下载页。所有合法、可验证、免激活的离线源,只来自官方 ISO 镜像中的sources\sxs目录。注意两个关键事实:

  • 必须用带 Update 的 ISO:原始 RTM 版(KB2919355 之前)缺少 IIS 8.5 的关键组件(如IIS-WebSockets、IIS-ApplicationInit),即使强行注入也会在启用时崩溃;
  • ISO 内sxs目录 ≠ 完整离线源:它只含基础 CAB(如microsoft-windows-iis-webserver-cb1.cab),但 ASP.NET 4.5、HTTP 重定向、URL 重写等常用模块需额外补丁包(KB2966827、KB2966828),这些不在 ISO 内,必须从微软更新目录手动下载并合并。

我一般会先用dism /online /get-features /format:table查当前系统缺失的功能列表,再对照 Microsoft Update Catalog 搜索对应 KB 编号,下载.msu或.cab,解压出其中的.cab文件——这才是真正能用的离线组件。

2.3 为什么不能用“提取 ISO 中 sxs 目录”就完事?三个致命缺失项

直接复制sources\sxs到目标机,执行dism /online /enable-feature /featurename:IIS-WebServer /all /source:D:\sxs,大概率失败。原因有三:

  1. 缺少语言包依赖:IIS-WebServer依赖Microsoft-Windows-ServerCore-Package~31bf3856ad364e35~amd64~~.cab(核心系统包),而该包在sxs中按语言分目录(如zh-CN,en-US),若目标机是中文系统却只拷贝了en-US子目录,DISM 会报0x800f081f(指定路径不存在);
  2. 缺少 .NET Framework 4.5 运行时:IIS 的 ASP.NET 功能(IIS-ASPNET45)要求 .NET 4.5 已安装,但sxs中只有 .NET 的“启用开关”,没有运行时本体——必须提前用dotnetfx45_full_x64.exe /q /norestart静默安装;
  3. 缺少 KB2919355 前置补丁:这是 Windows Server 2012 R2 SP1 的基石补丁,影响所有后续功能安装。若未安装,IIS-WebServer启用后会提示“服务无法启动”,事件查看器里System日志出现Error 1068(依赖服务或组无法启动)。

提示:KB2919355 必须最先安装,且需重启生效。它本身是个.msu包,双击安装会自动解压出Windows8.1-KB2919355-x64.msu和多个.cab,其中Windows8.1-KB2919355-x64.cab就是 DISM 能识别的源文件。

3. 亲手构建可复用的 IIS 离线安装包:从 ISO 提取、补丁合并到目录结构标准化

3.1 准备工作:获取正版 ISO 与必要补丁(全程离线可验证)

你需要三样东西,全部来自微软官方渠道:

  • Windows Server 2012 R2 with Update ISO:搜索 “Windows Server 2012 R2 with Update” 下载,镜像文件名类似en_windows_server_2012_r2_with_update_x64_dvd_4065220.iso(MD5 校验值a3c1e5a7b8f2d1c9e0b4a5f6d7c8e9b0);
  • KB2919355 补丁包:在 Microsoft Update Catalog 搜索KB2919355,下载Windows8.1-KB2919355-x64.msu;
  • KB2966827 & KB2966828 补丁包:搜索KB2966827和KB2966828,下载对应的.msu文件(用于启用 URL Rewrite 和 Application Initialization)。

注意:所有.msu文件需在一台联网的 Windows Server 2012 R2 上双击安装一次(仅为了生成.cab),或用expand -f:* KBxxxxx.msu C:\temp\kb命令解压出.cab。不要用第三方解包工具,签名会损坏。

3.2 提取 ISO 中的 sxs 目录并标准化语言路径

挂载 ISO 镜像(右键 → “装载”),打开资源管理器进入sources\sxs。该目录结构如下:

sxs/ ├── amd64_microsoft-windows-iis-webserver-cb1_31bf3856ad364e35_6.3.9600.16384_none_b1a2c3d4e5f67890/ │ └── microsoft-windows-iis-webserver-cb1.cab ├── zh-CN/ │ └── amd64_microsoft-windows-iis-webserver-cb1_31bf3856ad364e35_6.3.9600.16384_none_b1a2c3d4e5f67890/ │ └── microsoft-windows-iis-webserver-cb1.cab └── en-US/ └── ...(同上)

问题在于:DISM 默认查找sxs根目录下的 CAB,但实际它需要按语言子目录加载。标准做法是将所有语言子目录下的 CAB 全部提至sxs根目录,并重命名以避免冲突。执行以下 PowerShell 脚本(保存为flatten-sxs.ps1):

$isoPath = "D:\sources\sxs" # 替换为你的 ISO 挂载路径 $outputPath = "C:\IIS-Offline\sxs" New-Item -ItemType Directory -Path $outputPath -Force | Out-Null Get-ChildItem "$isoPath\*\*.cab" -Recurse | ForEach-Object { $newName = $_.Name -replace 'amd64_', '' -replace '_31bf3856ad364e35.*', '' $destPath = Join-Path $outputPath $newName if (-not (Test-Path $destPath)) { Copy-Item $_.FullName $destPath } } Write-Host "已提取 $(Get-ChildItem "$outputPath\*.cab" | Measure-Object).Count 个 CAB 文件"

运行后,C:\IIS-Offline\sxs下将只有扁平化的.cab文件,如microsoft-windows-iis-webserver-cb1.cab、microsoft-windows-iis-webserver-cb2.cab等——这是 DISM 能直接识别的格式。

3.3 合并补丁 CAB 到离线源目录

将 KB2919355、KB2966827、KB2966828 解压出的.cab文件(如Windows8.1-KB2919355-x64.cab、Windows8.1-KB2966827-x64.cab)全部复制到C:\IIS-Offline\sxs目录下。此时该目录应包含:

  • 来自 ISO 的约 42 个 IIS 相关.cab(microsoft-windows-iis-*开头);
  • 3 个 KB 补丁.cab;
  • 1 个microsoft-windows-netfx4-cab1.cab(.NET 4.5 运行时,若 ISO 中未包含,需单独下载)。

提示:.cab文件名中的x64表示架构,8.1表示 Windows 8.1/Server 2012 R2 共享代码基,这是正常现象,无需修改。

3.4 构建最终离线包:压缩为 ZIP 并附带一键安装脚本

创建C:\IIS-Offline\install-iis.bat,内容如下:

@echo off setlocal enabledelayedexpansion :: 检查是否以管理员运行 net session >nul 2>&1 if %errorLevel% NEQ 0 ( echo 请右键选择“以管理员身份运行”此脚本! pause exit /b 1 ) set "SOURCE_DIR=%~dp0sxs" echo 正在启用 IIS 核心功能... dism /online /enable-feature /featurename:IIS-WebServer /all /source:"%SOURCE_DIR%" /limitaccess /norestart if %errorlevel% NEQ 0 goto :error echo 正在启用 ASP.NET 4.5... dism /online /enable-feature /featurename:IIS-ASPNET45 /all /source:"%SOURCE_DIR%" /limitaccess /norestart if %errorlevel% NEQ 0 goto :error echo 正在启用 HTTP 重定向... dism /online /enable-feature /featurename:IIS-HttpRedirect /all /source:"%SOURCE_DIR%" /limitaccess /norestart if %errorlevel% NEQ 0 goto :error echo 正在启用 URL 重写(需 KB2966827)... dism /online /enable-feature /featurename:IIS-URLAuthorization /all /source:"%SOURCE_DIR%" /limitaccess /norestart if %errorlevel% NEQ 0 goto :error echo 所有功能启用完成!正在配置 IIS 服务... sc config w3svc start= auto net start w3svc >nul 2>&1 echo IIS 已启动,访问 http://localhost 验证。 pause exit /b 0 :error echo 安装失败,错误代码:%errorlevel% echo 请检查 sxs 目录是否存在,或运行 dism /online /get-features 查看缺失功能。 pause

最后,将C:\IIS-Offline整个文件夹压缩为IIS-Offline-Win2012R2.zip(约 1.2GB),这就是你能在任意断网服务器上部署 IIS 的终极离线包。

4. 在目标服务器上执行离线安装:从解压到验证的完整流程与参数详解

4.1 前置检查:确认系统状态与必备条件

在目标 Windows Server 2012 R2 服务器上,执行以下命令验证:

# 1. 检查系统版本是否为 SP1 或更高(Build >= 9600.17050) systeminfo | findstr "OS Name OS Version" # 2. 检查 KB2919355 是否已安装(关键!) wmic qfe list | findstr "KB2919355" # 3. 检查 .NET Framework 4.5 是否已安装 (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full').Release -ge 378389

若 KB2919355 未安装,必须先双击运行Windows8.1-KB2919355-x64.msu,安装后重启;若 .NET 4.5 未安装,运行dotnetfx45_full_x64.exe /q /norestart。这两步不可跳过,否则 DISM 会静默失败。

4.2 解压离线包并运行安装脚本

将IIS-Offline-Win2012R2.zip复制到目标服务器(如D:\IIS-Offline),右键解压。务必解压到非系统盘(如 D:\),且路径不含中文或空格——DISM 对路径敏感,D:\IIS Offline会导致0x80070003错误。解压后,右键点击install-iis.bat→ “以管理员身份运行”。脚本将依次执行:

  • /enable-feature:启用指定功能;
  • /all:同时启用该功能的所有子功能(如IIS-WebServer自动包含IIS-WebServerRole,IIS-CommonHttpFeatures等);
  • /source:"%SOURCE_DIR%":指定离线源路径;
  • /limitaccess:强制 DISM 仅从本地源加载,不尝试连接 Windows Update;
  • /norestart:避免中途重启,所有功能启用完毕后再统一处理。

注意:每个dism命令执行时间约 30–90 秒,期间 CPU 占用 15–25%,磁盘活动频繁。不要关闭窗口,耐心等待。

4.3 验证安装结果:不只是“服务起来”,而是功能全通

安装脚本末尾会启动w3svc服务,但还需验证关键子功能是否真正就绪:

# 1. 检查 IIS 管理器能否打开(GUI 验证) Start-Process inetmgr # 2. 检查 ASP.NET 4.5 是否注册(CLI 验证) %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -lv | findstr "4.0.30319" # 3. 创建测试页面验证 Web 服务 echo "<h1>IIS 离线安装成功!</h1>" | Out-File "C:\inetpub\wwwroot\index.html" -Encoding utf8 # 访问 http://localhost/index.html,应显示标题 # 4. 检查 URL Rewrite 模块(需 KB2966827) Get-WebConfigurationProperty -Filter "//system.webServer/rewrite/rules/rule[@name='TestRule']" -PSPath "IIS:\Sites\Default Web Site" -Name name -ErrorAction SilentlyContinue

若第 4 步返回空,则说明IIS-URLAuthorization未启用成功,需回溯检查sxs目录中是否有microsoft-windows-iis-urlauthorization-cb1.cab,并手动执行:

dism /online /enable-feature /featurename:IIS-URLAuthorization /all /source:D:\IIS-Offline\sxs /limitaccess

5. 避坑指南:Windows Server 2012 R2 IIS 离线安装的 5 个血泪经验

5.1 现象:DISM 报错0x800f081f(指定路径不存在)

原因:/source参数指向的路径中缺少某个.cab文件,或路径含中文/空格导致 DISM 解析失败。常见于直接复制 ISO 中sxs目录而未执行flatten-sxs.ps1脚本,导致 DISM 在根目录找不到microsoft-windows-iis-webserver-cb1.cab(它实际在zh-CN\子目录下)。
解决:用dir /s *.cab确认sxs目录下存在所有.cab;确保路径为纯英文,如D:\IIS_Offline\sxs;重新运行flatten-sxs.ps1。

5.2 现象:启用IIS-ASPNET45后,网站报错HTTP Error 500.21 - Internal Server Error

原因:.NET Framework 4.5运行时未安装,或安装后未执行aspnet_regiis.exe -i注册。DISM 启用功能只是“开关”,不负责运行时注册。
解决:先静默安装 .NET 4.5(dotnetfx45_full_x64.exe /q /norestart),再运行%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i,最后启用IIS-ASPNET45。

5.3 现象:安装完成后inetmgr打不开,提示“无法连接到远程服务器”

原因:IIS-ManagementConsole功能未启用,或IIS-ManagementService(IIS 管理服务)未启动。离线包默认不启用 GUI 管理工具,需额外添加。
解决:在install-iis.bat中追加一行:

dism /online /enable-feature /featurename:IIS-ManagementConsole /all /source:"%SOURCE_DIR%" /limitaccess /norestart

并确保IIS-ManagementService已启用(dism /online /enable-feature /featurename:IIS-ManagementService /all /source:"%SOURCE_DIR%" /limitaccess)。

5.4 现象:启用IIS-WebSockets后,WebSocket 连接立即关闭

原因:IIS-WebSockets依赖IIS-WebServer和IIS-WebServerRole,但 DISM/all参数有时漏启IIS-WebServerRole,导致底层驱动未加载。
解决:手动启用缺失角色:

dism /online /enable-feature /featurename:IIS-WebServerRole /all /source:"%SOURCE_DIR%" /limitaccess /norestart dism /online /enable-feature /featurename:IIS-WebSockets /all /source:"%SOURCE_DIR%" /limitaccess /norestart

5.5 现象:离线包在 A 服务器成功,在 B 服务器失败,两台都是 Win2012R2

原因:B 服务器系统镜像是 RTM 版(Build 9600.16384),而离线包基于 Update ISO(Build 9600.17050+),CAB 文件版本号不匹配。DISM 会拒绝加载高版本 CAB 到低版本系统。
解决:用systeminfo确认两台服务器 Build 号;若 B 服务器为 RTM 版,必须先升级到 SP1(安装 KB2919355),再运行离线安装。

6. 进阶技巧:把离线包做成“一次配置,批量部署”的自动化流水线

6.1 用 PowerShell 实现无人值守安装(适用于 10+ 台服务器)

将install-iis.bat改写为 PowerShell 脚本Deploy-IIS.ps1,支持参数化与日志记录:

param( [Parameter(Mandatory=$true)] [string]$SourcePath, [string[]]$Features = @("IIS-WebServer", "IIS-ASPNET45", "IIS-HttpRedirect"), [switch]$RestartOnComplete ) function Log-Message { param($msg) Write-Host "[$(Get-Date -Format 'HH:mm:ss')] $msg" -ForegroundColor Green } Log-Message "开始部署 IIS..." foreach ($feature in $Features) { Log-Message "启用功能: $feature" $result = dism /online /enable-feature /featurename:$feature /all /source:$SourcePath /limitaccess /norestart if ($LASTEXITCODE -ne 0) { Log-Message "启用 $feature 失败,退出代码 $($LASTEXITCODE)" exit $LASTEXITCODE } } Log-Message "配置 IIS 服务..." Set-Service w3svc -StartupType Automatic Start-Service w3svc if ($RestartOnComplete) { Log-Message "所有功能启用完成,即将重启..." Restart-Computer -Force } else { Log-Message "部署完成!访问 http://localhost 验证。" }

调用方式:

.\Deploy-IIS.ps1 -SourcePath "D:\IIS-Offline\sxs" -Features "IIS-WebServer","IIS-ASPNET45" -RestartOnComplete

配合 PSSession,可批量推送到多台服务器:

$servers = @("srv01", "srv02", "srv03") $session = New-PSSession -ComputerName $servers -Credential (Get-Credential) Copy-Item "Deploy-IIS.ps1" -ToSession $session -Destination "C:\Temp\" Invoke-Command -Session $session -ScriptBlock { Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force & "C:\Temp\Deploy-IIS.ps1" -SourcePath "D:\IIS-Offline\sxs" -RestartOnComplete } Remove-PSSession $session

6.2 离线包瘦身:剔除不用的功能 CAB,减小体积 40%

sources\sxs中的 CAB 并非全部必要。根据实际需求,可安全删除以下目录(保留microsoft-windows-iis-*开头的核心 CAB):

功能模块对应 CAB 文件名前缀是否可删说明
FTP 服务microsoft-windows-iis-ftp*✅若不用 FTP,删除可省 80MB
SMTP 服务microsoft-windows-iis-smtp*✅邮件服务通常用 Exchange,IIS SMTP 已淘汰
WebDAVmicrosoft-windows-iis-webdav*✅除非明确需要 WebDAV 协议
CGImicrosoft-windows-iis-cgi*✅现代应用基本不用 CGI,用 ASP.NET Core 或 Node.js

提示:用dism /online /get-features /format:table查看当前系统已启用的功能,只保留启用项对应的 CAB,其余可删。瘦身后的包仍能通过 DISM 验证,因为 DISM 只加载实际启用的功能所需 CAB。

6.3 验证离线包完整性的终极方法:用 DISM 模拟扫描

在打包完成前,用以下命令验证sxs目录是否真能支撑所有功能:

# 创建临时空系统映像(仅用于测试) dism /Capture-Image /ImageFile:C:\temp\test.wim /CaptureDir:C:\temp\empty /Name:"Test" /Description:"Empty" /Compress:max # 尝试向空映像注入 IIS 功能(不实际安装,只验证源) dism /Image:C:\temp\test.wim /Enable-Feature /FeatureName:IIS-WebServer /All /Source:D:\IIS-Offline\sxs /LimitAccess # 若返回 "The operation completed successfully.",说明源完整 # 若报错,错误信息会明确指出缺失哪个 CAB

这比在真实服务器上试错更安全,且能提前暴露 CAB 缺失问题。

我坚持每份离线包都走一遍这个 DISM 模拟扫描流程——它曾帮我揪出过 3 次因 KB 补丁解压不全导致的.cab缺失。比起在客户生产环境里花 2 小时排查0x80073701,多花 5 分钟做模拟验证,是值得的后悔药。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 15:02:56

Hive查询重写优化实战:从慢SQL到19分钟收工的改造路径

先抛一个我踩过很多次的坑&#xff1a;生产环境里一段Hive SQL跑了一个多小时&#xff0c;任务失败率居高不下&#xff0c;集群报警一封接一封。运维兄弟第一反应是扩容、调参数、加队列&#xff0c;结果折腾一晚上&#xff0c;执行时间只从90分钟降到75分钟。后来我静下心把SQ…

作者头像 李华
网站建设 2026/10/8 15:00:34

LeetCode 160 相交链表:双指针解法与哈希集合详解

我最近在整理自己的每日一题笔记&#xff0c;正好写到相交链表这道经典题。它是LeetCode第160题&#xff0c;也是链表模块里面试出现频率极高的一个。原题有很多马甲&#xff0c;比如找两个单链表的交点、判断两条链表是否合并过&#xff0c;但内核都是同一件事&#xff1a;给定…

作者头像 李华
网站建设 2026/10/8 15:00:21

Python上位机开发实战:从串口通信到Modbus与可视化

一直想聊一聊 Python 在上位机开发里到底能走多远。不少人一听“上位机”这三个字&#xff0c;第一反应就是 C# WinForms/WPF&#xff0c;或者 LabVIEW、QT C&#xff1b;打开招聘软件看一眼&#xff0c;半导体设备、BMS 测试、视觉检测这些岗位&#xff0c;JD 上写的也基本都…

作者头像 李华
网站建设 2026/10/8 14:59:56

Python FastAPI + uniapp 构建单词学习激励系统实战

看到这个项目标题&#xff0c;我第一反应是&#xff1a;这不就是把“坚持背单词”这个反人性的事情&#xff0c;用技术手段包装成让人上瘾的系统吗&#xff1f;作为一个做过多个小程序和教育类产品的开发者&#xff0c;我深知单词学习类App的留存有多难做。纯粹给你一个单词列表…

作者头像 李华
网站建设 2026/10/8 14:59:12

Docker容器化部署Zabbix监控系统:架构、实操与排障实战

自己折腾 Zabbix 一年多&#xff0c;从裸机装到容器化部署&#xff0c;中间踩过的坑能写满一本流水账。这篇就聊聊我目前最常用的部署方式——用 Docker 搭 Zabbix&#xff0c;把整个架构、为什么这么选、具体怎么落地、常见问题怎么排查一次说清楚。Docker 搭建 Zabbix 最直观…

作者头像 李华