在 Windows Server 2022 上部署网站,最常用且推荐的方式是使用 IIS (Internet Information Services)。以下是完整的部署步骤,涵盖从环境搭建到发布上线的全过程:
✅ 一、安装 IIS 角色
方法 1:使用服务器管理器(图形界面)
- 打开 服务器管理器 → 点击 添加角色和功能。
- 选择 “基于角色或基于功能的安装” → 下一步。
- 选择当前服务器 → 下一步。
- 勾选 “Web 服务器 (IIS)" → 展开后确保以下子功能被选中(根据需求):
- Web 管理工具(含 IIS 管理控制台)
- ASP.NET(如用 .NET Framework 应用)
- CGI、HTTP 重定向等(按需)
- 完成安装并重启(如有提示)。
方法 2:使用 PowerShell(快速部署)
Install-WindowsFeature -Name Web-Server, Web-Mgmt-Console, Web-Asp-Net45 -IncludeManagementTools
如需支持 .NET Core/Node.js 等,还需额外配置运行环境(见下文)。
✅ 二、准备网站内容
将你的网站文件放入默认目录:
C:inetpubwwwroot
或创建自定义站点根目录(例如 D:MySite),后续在 IIS 中绑定该路径。
💡 建议:
- 若为静态网站(HTML/CSS/JS),直接上传即可;
- 若为 ASP.NET 应用,需确保
.csproj已正确编译(发布为 Release 模式);- 若为 Node.js/Python 等,需先安装对应运行时(如 Node.js、Python),并通过反向X_X(如
nginx+wsman或http.sys)与 IIS 配合。
✅ 三、在 IIS 中创建网站
- 打开 IIS 管理器(搜索
inetmgr或从“管理工具”进入)。 - 右键 网站 → 添加网站…
- 网站名称:例如
MyCompanySite - 物理路径:指向你的网站文件夹(如
D:MySite) - 绑定设置:
- 类型:
http(或https,需证书) - IP 地址:
所有未分配或指定服务器 IP - 端口:默认
80(HTTP)或443(HTTPS) - 主机名:可选填域名(如
www.example.com)
- 类型:
- 网站名称:例如
- 点击 确定 创建。
✅ 此时访问 http://<服务器IP> 或 http://<主机名> 应能看到首页。
✅ 四、配置防火墙允许 HTTP/HTTPS
Windows 防火墙默认会阻止入站请求,需手动放行:
# 允许 HTTP (端口 80)
New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
# 允许 HTTPS (端口 443)
New-NetFirewallRule -DisplayName "Allow HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
⚠️ 生产环境建议使用专用安全组规则(若在云环境中),避免开放全部端口。
✅ 五、(可选)启用 HTTPS(SSL/TLS)
- 获取有效 SSL 证书(Let’s Encrypt、商业 CA 或自签名用于测试)。
- 在 IIS 管理器中:
- 选择你的网站 → 右侧 绑定… → 添加
https绑定(端口 443)→ 选择证书。
- 选择你的网站 → 右侧 绑定… → 添加
- 强制重定向 HTTP → HTTPS(推荐):
- 安装 URL Rewrite 模块(可从 Microsoft Download 下载)
- 编辑
web.config添加重写规则:<system.webServer> <rewrite> <rules> <rule name="Redirect to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer>
✅ 六、(高级)部署动态应用示例
| 技术栈 | 关键步骤 |
|---|---|
| .NET Framework | 安装对应版本(如 4.8),在 IIS 中设置应用程序池为 .NET CLR v4.0,启用 32/64 位进程(视程序而定) |
| .NET Core / .NET 5+ | 安装 .NET Hosting Bundle,使用 iisexpress 或 webdeploy 发布,IIS 通过 AspNetCoreModuleV2 自动托管 |
| Node.js | 安装 Node.js + PM2,用 IIS + ARR (Application Request Routing) 做反向X_X转发到 localhost:3000 |
| PHP | 下载 PHP for Windows(非 Thread Safe 版),配置 php.ini,安装 FastCGI,并在 IIS 中添加处理映射 |
📌 提示:
.NET Core应用推荐使用dotnet publish生成自包含部署包,再通过 IIS 托管。
✅ 七、验证与监控
- 本地测试:
http://localhost - 远程测试:浏览器访问
http://<公网IP>或域名(需 DNS 解析 + 路由器端口转发) - 查看日志:
C:inetpublogsLogFilesW3SVC<站点ID> - 性能监控:任务管理器 / Performance Monitor / IIS 自带诊断工具
🔒 安全建议(生产环境必做)
- 禁用不必要的 IIS 功能模块(减少攻击面)
- 定期更新 IIS 和 Windows 补丁
- 使用强密码保护 IIS 管理账户
- 启用 WAF(如 Azure WAF、ModSecurity)
- 限制目录浏览、隐藏敏感文件(
.config,.git等) - 配置
applicationHost.config中的安全策略
需要我针对某种具体技术栈(如 ASP.NET Core、Laravel、WordPress)提供详细部署指南吗?欢迎告诉我你的应用场景 😊
云知识CLOUD