资讯动态

Windows平台IIS安装实战:从图形界面到命令行全攻略

发布时间:2026/9/18 5:53:55 来源:尧图企业网站定制
1. 装IIS前先把这三件事想清楚网上关于IIS安装的教程一抓一大把但大部分都是照着微软文档翻个版本截图真正动手装的时候你还是会遇到各种奇奇怪怪的问题。我这个月刚帮一个客户从零配置了一台Windows Server 2022的IIS环境又在两台Windows 11工作站上做了同样操作整个过程踩了不少坑整理出来给你只要跟着做基本不会卡住。1.1 你到底需要哪个Windows版本上的IISIIS这东西在微软的Windows体系里属于隐身乘客不同版本的系统自带的IIS版本完全不一样而且功能面板的叫法也有细微差别。先看清楚你手里是什么系统再决定安装路径Windows Server 2022 / 2019自带IIS 10.0这是目前功能最全、跟现代ASP.NET Core配合最好的版本适合正式部署使用。Windows 11 / Windows 10同样是IIS 10.0但受限于桌面版系统的连接数限制默认10个并发连接只适合开发调试或个人小项目用不适合对外大规模提供服务。Windows Server 2016 / 2012 R2自带IIS 10.0 / IIS 8.5老项目迁移会碰到不过安装思路完全一致。很多新人上来就搜IIS配置然后照着一个Win7时代的老教程操作结果在Windows 11上连功能面板的入口都找不到直接蒙圈。我建议你先按住WinR输入winver确认系统版本再往下看。1.2 权限和账号安装前最容易被忽略的一环安装IIS需要管理员权限而且这里有个不算坑但你一定得知道的细节启用或关闭Windows功能这个面板打开之后组件列表的加载速度取决于系统状态有时候要等十几秒不要手快关掉重开。如果你装的是Windows Server还要特别注意一个事——服务器是否需要加入域、是否开了UAC。域环境下你用普通域账号操作虽然能打开功能面板但勾选组件后点确定时可能会提示拒绝访问这就是UAC令牌过滤在作祟。建议直接用本地Administrator账号操作或者右键开始菜单选择终端(管理员)从命令行走。我个人的习惯是能用命令行的就尽量别点鼠标尤其是需要批量部署多台服务器的时候命令行的可重复性远高于图形界面。这个后面会专门讲。1.3 想清楚你是界面安装还是命令安装你在搜索引擎里看到的大多数图文教程都是图形界面安装因为它直观适合新手。但实际工作中我强烈建议你至少会一种命令行方式图形界面启用或关闭Windows功能适合单机安装、临时测试、新手操作所见即所得。PowerShell命令适合批量部署、自动化脚本、远程管理一条命令装完所有组件。DISM命令适合系统镜像操作、离线安装、恢复损坏的IIS功能。这三条路我会把操作和参数全部给你拆开讲你按自己的场景选就行。接着往下看。2. 图形界面安装IIS的完整操作流不管你是Windows 10还是Windows Server图形界面安装的逻辑是完全一样的就是通过启用或关闭Windows功能把IIS这个可选组件勾上。2.1 打开启用或关闭Windows功能的几种方式最快的入口是按住Win R输入optionalfeatures回车直接弹出功能面板。第二个方式设置 → 应用 → 可选功能 → 更多Windows功能最终到达的还是同一个面板。第三个方式控制面板 → 程序 → 启用或关闭Windows功能这是老路径Win10/11依然保留但控件面板平时不太好找还是建议用optionalfeatures。打开之后你会看到一个很长很长的组件列表IIS的位置在列表的最底部名字叫Internet Information Services。注意它下面还有一个可展开的子项叫Web 管理工具和万维网服务英文版叫World Wide Web Services千万别只勾了顶层就点确定——那样装出来的IIS是个空壳连默认站点目录都不会创建。2.2 勾选项的详细解释哪些必须勾哪些可后补这里我直接给你一个标准勾选清单按这个选基本能覆盖90%的常见用途功能节点是否勾选说明Internet Information Services必须勾顶层节点Web 管理工具 → IIS 管理控制台必须勾没有它你就没有图形管理界面只能命令行操作万维网服务 → 常见HTTP功能 → 静态内容必须勾不勾的话连HTML页面都访问不了常见HTTP功能 → 默认文档推荐勾访问站点根目录时需要默认页常见HTTP功能 → HTTP错误推荐勾把错误信息展示出来调试方便常见HTTP功能 → HTTP重定向按需做301跳转时才需要运行状况和诊断 → HTTP日志、请求监视推荐勾日志是最重要的排障依据性能和稳定性 → 静态内容压缩推荐勾静态文件压缩能明显提加载速度应用程序开发功能 → ASP.NET 4.8 / ASP.NET 3.5看需求跑老程序必须装3.5新程序用4.8应用程序开发功能 → CGI按需跑PHP、Python等需要用到应用程序开发功能 → ISAPI扩展 / 筛选器按需老程序用的先不用管很多人安装之后发现IIS管理器打不开、或者打开站点报404.3多半就是上面某些小项没勾。这里说个我的真实经历有一次我帮人配置PHP环境明明PHP都装好了但访问.php文件一直404最后发现就是当初装IIS时没勾CGI那一项IIS根本不把PHP文件交给FastCgi模块处理。后来补勾CGI和ISAPI扩展两个选项重启IIS就好了。如果你是纯静态站点只勾静态内容和默认文档就能跑起来如果要跑ASP.NET程序记得把应用程序开发功能下的.NET Extensibility 4.8和ASP.NET 4.8也勾上。强烈建议在最开始就按上面表格把所有推荐的都勾了省得后面反复打开面板补装浪费时间不说还容易漏。2.3 安装过程与常见卡顿的处理勾选完毕后点确定系统开始安装这里有个进度百分比通常一两分钟能走完。但凡是Windows功能安装都有一定概率卡在某个百分比不动尤其是服务器上装了其他角色服务的时候比如IIS跟.NET Framework同时安装时最长可能要等10分钟左右。这里分享一个经验如果安装界面提示Windows需要重启才能完成操作别急着重启先把IIS安装完然后手动iisreset重启IIS服务试试。有时候不重启系统直接重启IIS服务也能让管理器正常工作。只有当iisreset都失败的时候才考虑重启机器。安装完成后验证方法非常直接打开浏览器访问http://localhost如果出现IIS默认的欢迎页面一个蓝色的Windows徽标加欢迎使用字样就说明安装成功。如果看到的是无法访问此网站先别慌继续往后排查后面有专门的章节处理。3. 用PowerShell和DISM命令行安装自动化部署的正确姿势如果你只需要装一台机器用图形界面完全没问题。但要是你手上有三五台服务器要配置或者你正在做运维标准化那我强烈建议走命令行这条路。同样一套命令发下去每台机器的IIS组件一致性是有保障的。3.1 PowerShell安装IIS的核心命令和参数解析在Windows Server 2022、Windows 11上最推荐的PowerShell模块是Install-WindowsFeatureServer系统和Enable-WindowsOptionalFeature桌面系统。先看Server系统上的用法。以管理员身份打开PowerShell执行Install-WindowsFeature -Name Web-Server -IncludeManagementTools这条命令的意思是安装Web服务器角色也就是IIS并且包含图形管理工具IIS管理器。但注意Web-Server是一个角色名称它底下包含的是一组子功能。如果你只想装核心Web服务器不带ASP.NET和CGI那上面一条就够了。如果你想装全套用下面这条Install-WindowsFeature Web-Server, Web-Mgmt-Tools, Web-Mgmt-Console, Web-Asp-Net45, Web-CGI, Web-Default-Doc, Web-Http-Logging -IncludeManagementTools这里每个名称的含义Web-ServerIIS核心服务Web-Mgmt-Tools/Web-Mgmt-Console管理工具与IIS管理器Web-Asp-Net45ASP.NET 4.5以上支持Web-CGICGI支持跑PHP等需要Web-Default-Doc默认文档支持Web-Http-LoggingHTTP日志命令跑完后PowerShell会列出一个返回表里面有Success字段。如果显示True说明安装成功。如果显示False但同时RestartNeeded是True那就要重启服务器。桌面版Windows10/11用的是另一个命令因为桌面版没有服务器角色的概念用的是可选功能Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole, IIS-ManagementConsole -All这个-Online表示操作当前正在运行的操作系统-All表示把这个功能下的所有子功能一并启用。如果提示RestartNeeded : True重启一下系统即可。3.2 DISM命令行安装与离线场景DISM是另一个经典的工具在Win8时代就开始用适合在系统还是镜像或者PE环境下操作也可以在正常系统里用来修复IIS组件损坏的问题。基本命令是dism /online /enable-feature /featurename:IIS-WebServerRole /all这条命令只装了IIS核心管理工具还需要单独加dism /online /enable-feature /featurename:IIS-ManagementConsole /allDISM最实用的场景其实是卸载和重装。如果你发现IIS管理器打不开、或者IIS服务异常启动不了可以用dism /online /disable-feature /featurename:IIS-WebServerRole先禁用重启再启用这一套下来能解决很多因为系统更新导致的组件损坏问题。但这里要提醒一句DISM执行的时候会使用系统组件库WinSxS里的文件如果组件库已经损坏或者被精简过某些精简版系统你可能会看到错误: 0x800f081f也就是找不到源文件。这时候就需要指定系统镜像的install.wim作为源。这个操作比较复杂日常场景不常用遇到的时候再查文档即可。3.3 装完以后如何通过命令行验证图形界面安装后可以通过浏览器验证命令行走完后同样需要验证但不用开浏览器那么麻烦。PowerShell里执行Get-Service W3SVC如果状态是RunningIIS核心服务是活的。再执行Get-WindowsFeature Web-Server查看Install State列如果显示Installed就说明角色准确安装。此外还有一个最直观的验证方式直接在命令行里发起HTTP请求Invoke-WebRequest -Uri http://localhost -UseBasicParsing如果返回了StatusCode : 200说明默认站点已经在响应了。这一步非常实用不用切窗口一条命令解决问题。4. 安装完成后的第一步验证IIS真的能用了见到IIS默认欢迎页很多人就觉得装完了完事了但实际工作中默认页能打开只是最基本的一步。接下来你要确认三个层面管理器能不能开、默认站点目录是不是建好了、日志是不是在记录。这三个都正常才算真正的安装成功。4.1 如何打开IIS管理器安装完成之后开始菜单里会多出一个Windows 管理工具文件夹里面能找到Internet Information Services (IIS)管理器。如果你不想翻菜单直接按住WinR输入inetmgr回车同样可以打开。打开之后会看到左侧有个连接面板里面列出的是当前机器上的应用程序池和网站。正常情况下你至少能看到一个名为Default Web Site的网站节点它的状态默认是已启动。如果看到的是已停止右键启动即可。Windows 11上这里偶尔会出现启动失败多半是端口被占用这在后面的排查章节会重点讲。4.2 快速创建一个测试站点既然都装好了我建议顺手建一个测试站点别再用默认站点测了。因为默认站点的物理路径在C:\inetpub\wwwroot很多人后面自己建站点时改错权限反而跟默认站点搞混。创建测试站点手动操作流程如下新建一个文件夹D:\WebSites\MyTest如果你没分D盘就用C:\MyTest但生产环境建议放非系统盘。在文件夹里新建一个index.html写入一行h1My Test Site/h1。打开IIS管理器右键左侧的网站节点选添加网站。站点名称填MyTest物理路径选到D:\WebSites\MyTest端口填一个不冲突的比如8080。确定之后浏览器访问http://localhost:8080。这一步能走通说明IIS的站点管理功能没问题静态文件解析、端口绑定、默认文档处理都正常了。4.3 检查HTTP响应和日志静态页面能访问后还差最后一步验证——日志。IIS的默认日志位置在C:\inetpub\logs\LogFiles\W3SVC1W3SVC1是默认站点的ID站点多了会是W3SVC2、W3SVC3这样的递增编号。打开今天的日志文件你会看到类似下面这样的行2025-01-15 14:23:45 127.0.0.1 GET /index.html 80 - 200 0 0 12这行日志里的200就是HTTP状态码说明你的请求被IIS正常处理。日志记录了客户端IP、请求方法、请求的URL、端口和状态码是以后排查问题最重要的依据。如果你访问了站点但日志里没有记录那就要看看是不是日志功能没装好或者日志路径权限配置错了。我见过不少案例站点明明能访问但日志零记录最后发现是日志文件目录的权限被改过IIS工作进程没有写权限。这个坑常见于管理员在排查问题时手动修改了LogFiles目录的NTFS权限结果反而把日志功能搞坏了。5. 安装和测试中我踩过的坑附排查链路这一部分不是凭空想象出来的全部来自我实际安装和配置IIS时遇到过的真实问题。遇到问题不可怕可怕的是你在网上乱搜一气试了一堆不相关的方法最后把系统搞得更乱。我会按问题现象 → 排查思路 → 处理办法的方式给你完整链路。5.1 端口占用导致网站启动失败现象IIS管理器里站点右键启动时直接报进程无法访问因为该端口正被另一个进程使用。排查链路打开命令行执行netstat -ano | findstr :80。如果你的站点绑定的是80端口这个命令会列出所有监听80端口的进程及PID。然后执行tasklist | findstr PID把进程名找出来。最常见的占用者就是其他Web服务比如Nginx、Apache或是Windows上的SQL Server Reporting Service。处理要么停掉占用的服务要么把IIS站点改绑其他端口。遇到这种情况我一般先确认那台服务器上是否真的需要保留别的Web服务如果没有就直接停掉然后iisreset重启IIS。5.2 403.14错误默认页面没显示现象站点能起来但访问http://localhost时浏览器显示HTTP 错误 403.14 - Forbidden提示Web服务器被配置为不列出此目录的内容。排查链路这个错误的本质是IIS在根目录下默认文档清单里没找到任何文件同时目录浏览功能又是关闭的。IIS默认的默认文档清单是Default.htm、Default.asp、index.htm、index.html、iisstart.htm。如果你的站点目录里没有这些文件就会看到403.14。处理解决方式有三种。第一种是在站点根目录放一个index.html第二种是在IIS管理器中双击默认文档把你的首页文件名加进去第三种是启用目录浏览不推荐容易暴露目录结构。最规范的做法是第一种从源头把首页文件放好。5.3 同机访问正常外部访问不了现象本机浏览器访问http://localhost一切正常但从局域网另一台电脑访问http://服务器IP却超时或者无法连接。排查链路这是经典的三层问题IIS服务没监听、系统防火墙拦截、路由器/安全组没放行。先看监听命令行执行netstat -ano | findstr :80确认IIS在监听所有网卡还是只监听本机回环。如果监听正常再看Windows防火墙控制面板 → Windows Defender防火墙 → 高级设置 → 入站规则确认有一条允许TCP 80端口或你绑定的端口的规则。如果服务器云厂商的安全组策略挡着那还要去云控制台放行端口。处理如果确认IIS正常监听一般直接加一条入站规则即可。命令行里可以快速执行New-NetFirewallRule -DisplayName IIS HTTP 80 -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow这条命令添加一条名为IIS HTTP 80的入站规则允许外部访问TCP 80端口。如果端口是8080把-LocalPort改成8080即可。5.4 静态页面能访问但ASP.NET程序报错现象放在wwwroot里的HTML页面能正常访问但部署一个ASP.NET网站后请求.aspx页面报HTTP 错误 500.19或500.21。排查链路这类问题绝大多数是因为安装IIS时漏勾了ASP.NET相关功能。IIS虽然是Windows自带的组件但它默认只启用静态文件处理模块ASP.NET相关的托管模块需要单独启用。500.19通常是指配置文件web.config语法错误或权限不足但一个刚装好的服务器上最常见的原因是ASP.NET功能模块压根没装上。处理回到功能面板把应用程序开发功能下的ASP.NET相关项全部勾上。如果不知道具体哪一项最简单粗暴的方式是把整棵IIS节点下的所有功能都勾上装完重启一般问题就消失。之后再根据实际需要减功能而不是在报错时一个个猜。5.5 Windows更新后IIS管理器打不开现象某次Windows Update之后双击IIS管理器提示Filename: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config错误或者管理器直接闪退。排查链路这是system32下IIS配置文件与更新后组件不一致导致的。先别急着重装观察C:\Windows\system32\inetsrv\config里是否存在applicationHost.config文件以及这个目录的权限是否正常。如果文件还在尝试用管理员身份运行命令行执行iisreset看是否报错。如果iisreset也失败说明IIS配置数据库已经损坏。处理常规恢复手段是用DISM重建功能状态。先禁用IIS后再启用dism /online /disable-feature /featurename:IIS-WebServerRole重启后重新启用dism /online /enable-feature /featurename:IIS-WebServerRole /all如果还是不行就要检查是否有备份可以覆盖applicationHost.config。养成定期导出IIS配置的习惯能省很多事这也顺带引出下一个章节的内容。6. 装好IIS之后的几个推荐设置很多教程到看到默认页面就截然而止但实际使用中IIS的默认配置只能说能用离好用还有一段距离。下面几个设置是我每次装完IIS都会顺手做的成本极低收益却很大。6.1 关闭不用的功能模块减少暴露面IIS默认装好的模块中有相当一部分是普通业务根本用不到却默认开启的。比如WebDAV Publishing网页分布式创作和版本控制、FTP Server、Server-Side Includes这些模块每多一个就意味着服务器多一分被攻击的风险。在IIS管理器中进入站点主页双击模块功能能看到当前加载的所有模块。对于不用WebDAV、不用FTP的场景直接把这些模块删掉或禁用。更重要的是如果之前安装时勾了一堆用不上的功能可以在启用或关闭Windows功能里取消勾选比如FTP服务器、邮件服务器相关组件。我的个人标准是只保留静态内容、ASP.NET如果有、HTTP日志、默认文档、请求筛选这几项其余一律关闭。这样IIS的启动速度快占内存少而且排查问题时干扰项更少。6.2 备份配置数据库applicationHost.configIIS的全局配置都存放在C:\Windows\system32\inetsrv\config\applicationHost.config文件里包括所有站点绑定、应用程序池设置、模块配置、凭据信息等。一旦这个文件损坏或误操作覆盖整个IIS的站点配置就全部丢失。在IIS管理器的右侧操作面板里有一个备份选项可以直接生成一份配置备份。默认备份位置在C:\Windows\system32\inetsrv\backup。如果你使用的是命令行也可以这样操作%windir%\system32\inetsrv\appcmd.exe add backup backup-20250115这样生成一份名为backup-20250115的备份。恢复的时候用%windir%\system32\inetsrv\appcmd.exe restore backup backup-20250115我基本每次改完大型配置比如新增了十几个站点都会做一次备份动作花费不到十秒但出现问题时能救急。工具不嫌多备份不嫌勤这是运维的基本素养。6.3 把默认日志路径和站点目录改到非系统盘这里涉及一个很多人没意识到的性能问题。IIS默认的日志路径是C:\inetpub\logs默认站点目录是C:\inetpub\wwwroot。系统盘通常是SSD但若你的服务器每天产生大量访问日志长时间运行后日志文件会越攒越大占用系统盘空间严重时还会拖慢系统响应。尤其是云服务器系统盘默认只有40GB到50GB一旦被日志和网站文件塞满轻则IIS无法写入日志重则整个Windows系统运行缓慢。我遇到过一次客户的服务器C盘100%空间占用最终查下来其中一个站点每天的日志文件就在产生5GB以上的数据。改法很简单在IIS管理器中选中服务器根节点不是站点双击日志功能。修改目录为D盘路径比如D:\IISLogs。重新创建每个站点的物理路径把站点文件放到D盘。在新目录上赋予IIS_IUSRS组读取权限日志目录要赋予写权限。在PowerShell里改日志目录也有对应命令Set-WebConfigurationProperty -Filter system.applicationHost/sites/siteDefaults/logFile -Name directory -Value D:\IISLogs这条命令把全局的日志默认目录直接指向D:\IISLogs之后新建的所有站点日志都会写到该目录下。注意执行前要先建好这个文件夹并且确认IIS_IUSRS有写权限。这一步做完后重启W3SVC服务Restart-Service W3SVC改完之后你可能会发现日志目录里并没有立刻出现新的日志文件不用着急有请求进来才会生成。当你访问一次站点后再看就会发现D:\IISLogs下已经多了一个W3SVC1子目录里面躺着今天的日志。6.4 顺手做一件小事开启请求筛选的隐藏片段限制IIS虽然自带一个请求筛选模块但它默认的规则相对宽松。如果你要对外提供服务在站点的主页双击请求筛选点编辑功能设置能看到一组限制参数请求长度限制、URL长度限制、查询字符串长度限制等。如果你不想过于深入配置我建议至少把隐藏的段这个目录里的.git、.env等敏感文件目录屏蔽掉防止别人通过Web直接访问这些不该被访问的文件。操作方式是在请求筛选页面右键隐藏段添加一个段名比如.git。这样即使站点根目录下有.git目录外部也无法通过URL访问到。这类小动作在实际安全评审中非常加分而且配置成本极低。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价