iis6安装

Windows Server 2003 自带的 IIS 6.0 到现在还有人在用,多数是因为老业务系统绑死了 .NET 2.0 或者经典 ASP 那套东西,迁移成本太高。我上个月刚给一台跑了十二年的老服务器重装过一遍,过程不算复杂,但坑不少。

安装 IIS 6 最直接的方式是通过“控制面板 → 添加或删除程序 → 添加/删除 Windows 组件”。勾选“应用程序服务器”之后点“详细信息”,里面有个“Internet 信息服务 (IIS)”,再点“详细信息”才能看到子组件列表。这里有个细节:默认勾选里不包括“万维网服务”下的“Active Server Pages”,如果你要跑 .asp 文件,得手动展开“万维网服务 → 万维网服务子组件”把 ASP 勾上。我第一次装的时候没注意,后来访问一个 index.asp 页面直接弹 404,排查了半小时才反应过来。

安装过程中系统会提示插入 Windows Server 2003 安装光盘,或者指定 i386 目录的路径。如果你手头没有物理光盘,可以提前把 ISO 挂载到虚拟光驱,或者把 i386 文件夹拷到本地硬盘。我一般习惯把路径设为 D:\i386,这样后续装其他组件(比如 SMTP 服务)时不用反复找盘。

装完之后别急着配站点。先确认两个服务是否正常启动:World Wide Web Publishing Service 和 IIS Admin Service。后者是前者的依赖,如果 IIS Admin 没起来,W3SVC 会直接报错 1068。我遇到过一台机器因为之前装过 Apache,80 端口被占用,W3SVC 启动后自动停止。用 netstat -ano | findstr :80 查一下,把占用进程干掉或者改 IIS 的端口就行。

IIS 6 和后来的 IIS 7+ 在架构上差别很大。IIS 6 用的是 http.sys 内核驱动加用户态 w3wp.exe 工作进程池,每个应用池默认独立运行,一个池崩了不影响其他池。这个设计在当时算很先进,但配置起来比 IIS 7 的 applicationHost.config 文件要繁琐得多。你得通过 IIS 管理器图形界面或者 adsutil.vbs 脚本去改元数据库(metabase)。元数据库文件在 C:\Windows\System32\inetsrv\MetaBase.xml,改之前务必备份,改坏了 IIS 直接罢工。

建站点的时候有个默认行为要注意:IIS 6 的“默认网站”监听所有未分配 IP 的 80 端口。如果你新建一个站点绑定了特定 IP,但没停掉默认网站,访问那个 IP 仍然会走到默认网站的内容。解决办法要么停掉默认网站,要么在默认网站的“网站”选项卡里把 IP 地址改成“全部未分配”之外的具体 IP。这个逻辑跟 Apache 的 VirtualHost 匹配顺序不太一样,刚上手容易绕进去。

权限方面,IIS 6 默认用 IUSR_机器名 这个匿名账户读取静态文件。如果站点目录放在 NTFS 分区上,记得给这个账户加上“读取”和“列出文件夹目录”权限。动态页面比如 ASP,还需要给 IWAM_机器名 账户对 C:\Windows\Temp 目录的写入权限,否则会报 500 错误。我见过有人把站点目录权限设成 Everyone 完全控制,能跑但等于裸奔,内网环境都别这么干。

最后说一个实际维护中的观察:IIS 6 的日志默认按天生成,放在 C:\Windows\System32\LogFiles\W3SVC1 下面。老服务器磁盘小,日志几个月就能撑爆 C 盘。要么定期清理,要么在站点属性里把日志目录改到数据盘。我自己的习惯是每周写个批处理删掉 30 天前的 .log 文件,省得哪天磁盘满了服务莫名其妙挂掉。