简介:这份IIS 6.0完整安装包面向需要在Windows XP环境下搭建Web服务器的个人开发者、小型企业运维人员及Web服务器初学者,解决XP系统默认未集成IIS组件、手动安装时缺少必要DLL文件的问题。压缩包为rar格式,共273个文件,约11.69MB,包含98个dl_、40个htm、25个dll、13个in_与13个exe等核心组件,以及chm帮助文档、cab压缩包、inf安装信息、as_脚本样例和gif图标资源,覆盖安装、配置与文档说明各环节。已有282人学习下载。借助该包可快速完成IIS 6.0部署,体验其进程分离模型带来的稳定性、Metabase集中配置管理、SSL/TLS安全通信、WebDAV远程协作、FTP服务及ASP与CGI脚本支持等特性,是学习Web服务器管理与动态网站开发的实用平台。
1. 为什么今天还有人需要一份 iis6.0 完整安装包
接手一台离线环境里的老业务机,系统是 Windows Server 2003,需求是让一个 ASP 站点重新跑起来。打开「添加或删除程序」里的 Windows 组件向导,勾上「应用程序服务器」再点「Internet 信息服务」,结果弹窗提示插入系统光盘——可这台机器根本没有光驱,镜像也早就不在手边。这种场景下,你真正缺的不是「IIS 怎么配」,而是一份能直接落地的 iis6.0 完整安装包,以及知道它该往哪放、怎么装、装完怎么验证。
IIS 6.0 是随 Windows Server 2003 系列一起发布的 Web 服务器组件,它和后来的 IIS 7 在架构上完全是两回事:IIS 6.0 用的是 HTTP.sys 内核驱动加用户态的 w3wp.exe 工作进程,靠应用程序池做隔离,配置全写在 metabase.xml 里。这套东西今天看确实老,但大量内网老系统、工控上位机、老旧 ERP 的 Web 端还压在它上面,运维和二次开发的人绕不开。这篇笔记面向的就是这类人:手里有台老机器,需要把 IIS 6.0 装全、装对,而不是装个半成品然后被各种 401、404、500 折腾。下面从组件构成讲到安装路径、参数配置和排错,尽量让你照着能复现。
2. iis6.0 完整安装包到底包含哪些组件
很多人以为「完整安装包」就是一个 exe,双击就完事。实际上 IIS 6.0 从来不是独立发行的产品,它是以 Windows 组件形式存在的,所谓「完整」指的是把散落在系统安装介质里的组件文件凑齐,让组件向导能顺利跑完。理解这一点,后面找文件、放文件才不会抓瞎。
2.1 组件清单与依赖关系
IIS 6.0 的安装单元在系统里叫「Internet 信息服务 (IIS)」,展开后是一棵组件树。核心部分包括万维网服务(World Wide Web Service)、FTP 服务、SMTP 服务、NNTP 服务,以及一堆子组件:Active Server Pages、远程管理 (HTML)、Internet 数据连接器、WebDAV、FrontPage 服务器扩展等。真正让站点跑起来的最小集合是「万维网服务 + Active Server Pages + 公共文件」,其余按需勾选。
这里有个容易被忽略的点:IIS 6.0 依赖「应用程序服务器」这个父组件,而应用程序服务器又依赖 COM+ 和 .NET 相关组件。如果你在组件向导里只勾 IIS 不勾应用程序服务器,向导会自己把父级补上,但补的过程中同样需要安装介质。所以「完整安装包」要覆盖的不只是 IIS 目录,还包括应用程序服务器相关的文件。
| 组件层级 | 名称 | 是否必需 | 说明 |
|---|---|---|---|
| 父组件 | 应用程序服务器 | 是 | IIS 的挂载点,含 COM+ 网络访问 |
| 核心 | 万维网服务 | 是 | 提供 HTTP,w3wp.exe 工作进程 |
| 核心 | 公共文件 | 是 | 共享的 DLL 与配置模板 |
| 脚本 | Active Server Pages | 按需 | 跑 .asp 老站必勾 |
| 扩展 | WebDAV / FrontPage 扩展 | 按需 | 需要 Web 编辑或发布时勾 |
| 附属 | FTP / SMTP / NNTP | 按需 | 单独服务,与 HTTP 独立 |
2.2 安装介质里文件的实际位置
在 Windows Server 2003 的安装光盘或 ISO 里,IIS 组件文件集中在I386目录下,以压缩的 cab 形式存在。关键文件是iis6.cab(部分版本叫iis.cab),它打包了 IIS 的二进制和模板;此外还有comapps.cab、netfx.cab等对应应用程序服务器和 .NET 的文件。组件向导在安装时会去读I386下的这些 cab,解压到%SystemRoot%\system32\inetsrv等目标目录。
所以「凑一份完整安装包」的本质,是把I386目录(或至少其中与 IIS 相关的 cab 和 inf)完整复制到本地某个路径,然后在组件向导提示插入光盘时,把路径指过去。常见做法有两种:一是把整个I386拷到硬盘,二是只拷 IIS 相关文件但保持目录结构。前者省心,后者省空间,我一般推荐前者,因为组件向导有时会连带请求其他 cab,缺一个就卡住。
2.3 为什么直接拷 inetsrv 目录不管用
血泪经验:有人图省事,从另一台已装好 IIS 的机器上把C:\Windows\System32\inetsrv整个拷过来,覆盖到目标机,然后手动注册几个 DLL,以为就装好了。结果服务起不来,metabase 读不到,事件日志里一堆「无法初始化」。原因是 IIS 6.0 的安装不只是文件复制,还涉及注册表项、COM+ 组件注册、WMI 提供程序注册、metabase 的初始 schema 写入,以及 HTTP.sys 的驱动绑定。这些动作只有组件向导(或 sysocmgr)会做,手工拷文件补不齐。
正确思路是:文件可以提前备好,但安装动作必须走组件向导或等价的无人值守安装命令。下面一章就讲怎么把备好的文件喂给向导。
3. 用组件向导和无人值守命令装全 IIS 6.0
装 IIS 6.0 有两条路:图形界面的「Windows 组件向导」,和命令行的 sysocmgr 无人值守安装。前者适合单台、看得见屏幕的场景;后者适合批量或远程。两条路都需要指向安装源,区别只是交互方式。
3.1 图形向导指定本地安装源的完整步骤
先把安装介质里的I386目录整体复制到本地,比如D:\i386src。然后打开「控制面板 → 添加或删除程序 → 添加/删除 Windows 组件」,勾选「应用程序服务器」,点「详细信息」进去把「Internet 信息服务 (IIS)」及其子项按需勾上。点确定后向导开始复制文件,中途会弹出「插入光盘」的对话框。
这时点「浏览」,定位到D:\i386src,确定。向导会从该目录读取 cab 并继续。如果它再次弹窗,说明还有文件不在这个目录,检查是不是漏拷了comapps.cab之类。整个过程不需要真的光盘,只要目录结构对。
提示:复制
I386时务必保持原始目录层级,不要只把 cab 文件平铺到一个文件夹里,向导是按相对路径找文件的。
3.2 sysocmgr 无人值守安装命令与参数
批量场景下,图形向导点不过来。Windows Server 2003 自带sysocmgr.exe,可以用应答文件驱动组件安装。先写一个应答文件,比如iis_unattend.txt:
[Components] iis_common = on iis_www = on iis_asp = on iis_inetmgr = on iis_ftp = off iis_smtp = off iis_nntp = off iis_webdav = off iis_fp_ext = off appsrv_console = on complusnetwork = on然后执行:
sysocmgr /i:%windir%\inf\sysoc.inf /u:D:\iis_unattend.txt /r参数说明:/i指定组件信息文件,固定指向sysoc.inf;/u指定应答文件路径;/r表示装完不重启(若组件要求重启,去掉/r让它自动重启)。执行时同样需要安装源,可以在应答文件里加[Components]之外的SourcePath,或者提前把I386放到系统会默认查找的位置。
[Components] iis_www = on iis_asp = on [SourcePath] i386 = D:\i386src加上[SourcePath]段后,sysocmgr 会直接去D:\i386src取文件,不再弹窗。注意段名是i386,值指向包含 cab 的目录,不是I386本身再套一层。
3.3 装完后的最小验证:站点、应用程序池、metabase
装完别急着部署业务,先做三步验证。第一步,看服务:iisadmin、w3svc、msftpsvc(若装了 FTP)是否自动启动。第二步,看默认站点:浏览器访问http://localhost,应出现「建设中」或默认页;若 404,检查C:\Inetpub\wwwroot是否存在且默认文档配置正确。第三步,看 metabase:用cscript %SystemRoot%\system32\iisweb.vbs /query列出站点,能列出说明 metabase 正常。
cscript //nologo %SystemRoot%\system32\iisweb.vbs /query net start w3svc如果iisweb.vbs报「找不到配置数据库」,多半是 metabase 没初始化,回到组件向导确认「万维网服务」和「公共文件」都装上了。这三步过了,才算一份 iis6.0 完整安装包真正落地。
4. 安装与配置里最容易翻车的几个点
装 IIS 6.0 的坑,大多不在「装不上」,而在「装上了但不对」。下面几条是我和同行踩过的,按现象、原因、解决写清楚。
4.1 组件向导反复要光盘
现象:指定了本地I386目录,向导还是反复弹「插入光盘」,换路径也没用。原因通常是目录里缺 cab,或者 cab 版本与当前系统补丁级别不匹配——比如系统打了 SP2,而安装源是 RTM 的I386,部分文件校验不过。解决:用与系统同补丁级别的安装介质,或者把 SP2 的补丁包解开后把更新过的 cab 合并进I386。实在找不到,就退而求其次,只装最小 HTTP 组件,减少对缺失 cab 的依赖。
4.2 装完 ASP 页面报 404 而非 500
现象:.asp文件访问返回 404,静态.html正常。原因不是 ASP 没装,而是 IIS 6.0 默认把 ASP 列为「禁止」的 Web 服务扩展。IIS 6.0 引入了 Web 服务扩展的概念,出于安全默认只允许静态内容。解决:打开 IIS 管理器,展开「Web 服务扩展」,找到「Active Server Pages」,点「允许」。命令行等价操作:
cscript //nologo %SystemRoot%\system32\iisext.vbs /en ASP/en表示启用指定扩展,扩展名要和列表里显示的一致。启用后无需重启 w3svc,立即生效。
4.3 应用程序池一启动就 503
现象:站点配了独立应用程序池,访问返回 503 Service Unavailable。原因常见有两种:一是应用程序池标识用的账户密码不对或权限不足;二是该池的「健康」设置里启用了快速失败保护,工作进程崩溃几次后被禁用。解决:先看事件日志里 W3SVC 和 WAM 的记录,确认是身份问题还是崩溃。身份问题就改用NetworkService或预配置的账户并授予「作为服务登录」权限;崩溃问题就临时关掉快速失败保护,定位崩溃的 ISAPI 或脚本。
4.4 metabase.xml 改完不生效
现象:直接编辑%SystemRoot%\system32\inetsrv\metabase.xml后,配置没变化。原因是 IIS 6.0 默认开启了 metabase 的「运行时编辑」保护,且管理员直接改文件时,IIS 可能仍在用内存中的旧配置。解决:改之前先在 IIS 管理器里停止 IIS 服务(不是停 w3svc,是停整个 IIS Admin),改完再启动;或者用adsutil.vbs走正规接口改。直接改文件属于应急手段,改完务必用iisreset重启验证。
net stop iisadmin /y notepad %SystemRoot%\system32\inetsrv\metabase.xml net start w3svcnet stop iisadmin /y会连带停掉依赖它的 w3svc、msftpsvc 等,/y免去逐个确认。改完只启 w3svc 即可,其他服务按需启动。
4.5 64 位系统上装 32 位扩展失败
现象:在 64 位 Windows Server 2003 上装某个 32 位 ISAPI 扩展,配置后报「不是有效的 Win32 应用程序」。原因是 IIS 6.0 在 64 位系统上默认以 64 位模式运行工作进程,加载不了 32 位 DLL。解决:把该应用程序池的「启用 32 位应用程序」设为 True。命令行方式:
cscript //nologo %SystemRoot%\system32\adsutil.vbs set W3SVC/AppPools/DefaultAppPool/Enable32BitAppOnWin64 1 iisresetEnable32BitAppOnWin64为 1 表示允许 32 位,改完必须iisreset才生效。注意这个设置是池级别的,别全局乱开,否则纯 64 位应用反而受影响。
5. 让老 IIS 6.0 稳下来的几个进阶习惯
装好只是起点,老机器上跑 IIS 6.0,真正省心的是把日志、备份和隔离做在前面。我一般会做三件事:第一,把 metabase 定期导出备份,命令是cscript adsutil.vbs enum / > metabase_backup.txt,虽然不能直接还原,但出问题时能对照出哪项被改过;更稳妥的是用 IIS 管理器的「保存配置到文件」功能,生成一个 XML,恢复时直接导入。第二,给每个站点单独建应用程序池,别共用 DefaultAppPool,一个站点崩了不牵连其他,这是 IIS 6.0 隔离机制最实用的地方。第三,把日志目录从默认的%SystemRoot%\System32\LogFiles挪到数据盘,避免系统盘被日志写满导致整机异常。
验证方面,我习惯用iisreset /status看各服务状态,用netstat -ano | findstr :80确认 80 端口被哪个 PID 占用,再用任务管理器对到 w3wp.exe。有一次一台老机器站点时好时坏,最后就是靠netstat发现 80 被另一个不知名进程间歇性抢占,而不是 IIS 本身的问题。这类排查思路比记命令更重要。
最后说个习惯:每次动 IIS 6.0 配置前,先iisreset /stop,改完再/start,别在运行中直接改 metabase 或删应用程序池。老系统的容错没那么多后悔药,停一下再动,能省掉大量「改完就起不来」的麻烦。希望帮到你。
本文还有配套的精品资源,点击获取