IIS站点部署全攻略:从环境配置到故障排查的完整实践
1. 从零到一:为什么你的IIS站点发布总是不对劲?
如果你在Windows服务器上部署过Web应用,大概率绕不开IIS(Internet Information Services)。这个微软自家的Web服务器,承载着无数ASP.NET、.NET Core乃至静态站点的运行。但说实话,我见过太多人,包括一些有几年经验的开发者,在IIS上发布站点时,依然会踩进同一个坑里:明明本地跑得好好的,一发布到IIS就404、500错误,或者功能残缺不全。问题往往不在于IIS本身有多复杂,而在于我们习惯性地把“发布”简化成了“复制文件”和“点几个按钮”,却忽略了背后一整套从环境、权限到配置的逻辑链条。
今天,我们就抛开那些笼统的教程,深入骨髓地拆解一遍在IIS上发布站点的完整步骤。这不仅仅是操作指南,更是一次对Windows服务器Web托管核心逻辑的梳理。你会发现,很多让你头疼的问题,比如WebSocket连接失败(对应热词中的 iis error during websocket handshake: unexpected response code: 200)、PUT漏洞利用(对应 iis 6.0 put 漏洞)、甚至是动态内容无法执行,其根源都藏在发布流程的细节里。我们的目标,是让你发布的每一个站点都“知其然,更知其所以然”,真正稳定可控。
2. 发布前的战略准备:环境、身份与内容
在动手点击“发布”按钮之前,有比复制文件更重要的事情。很多发布后诡异的问题,其种子在准备阶段就已经埋下。这一步的核心是厘清三个问题:用什么环境跑?谁有权限跑?跑的是什么内容?
2.1 环境侦察:IIS角色与功能清单
首先,确保服务器上安装了IIS,并且安装了正确的功能模块。这不是简单地点开“启用或关闭Windows功能”勾上“Internet Information Services”就完事的。
核心角色服务安装: 通过服务器管理器添加角色和功能,在“服务器角色”步骤,选中“Web服务器(IIS)”。此时,会弹出角色服务列表,这里的选择至关重要:
- 必须基础项:默认选中的“Web服务器”基础结构通常够用,但务必确保“应用程序开发”下的子项根据你的技术栈勾选。例如,部署ASP.NET 4.x应用,必须勾选“.NET Extensibility 4.8”、“ASP.NET 4.8”、“ISAPI扩展”、“ISAPI筛选器”。对于.NET Core或.NET 5+应用,虽然它们不依赖IIS的托管模块(而是通过
AspNetCoreModuleV2),但安装这些传统项有时能避免一些兼容性问题。 - 关键功能项:
- 管理工具:建议勾选“IIS管理控制台”和“IIS管理脚本和工具”,方便后续管理和排查。
- HTTP功能:确保“HTTP重定向”、“静态内容”、“默认文档”被选中。“WebSocket协议”如果应用需要(对应热词
iis websocket),必须勾选,否则WebSocket连接会失败。 - 安全性:根据需求选择“请求筛选”、“IP和域限制”等。
- 性能:“静态内容压缩”、“动态内容压缩”对提升网站性能有帮助。
注意:对于热词中提到的
iis arr 3.0(Application Request Routing),这是一个需要单独下载安装的扩展,用于实现反向代理、负载均衡等高级功能,不属于默认IIS角色服务。如果你的架构需要ARR,需要在安装IIS后另行安装。
安装完成后,打开IIS管理器(运行inetmgr),在左侧连接树中看到服务器节点,即表示IIS安装成功。
2.2 身份与权限:应用程序池的“人格”设定
这是IIS中最核心也最易错的概念之一。你可以把应用程序池看作一个“容器”或“运行环境”,它决定了你的网站应用程序以什么身份、在什么模式下运行。
创建与配置应用程序池: