在 Windows Server 2022 上部署网站,最常用且推荐的方式是使用 IIS (Internet Information Services)。以下是完整的部署流程,涵盖从环境搭建到上线的各个环节:
一、安装 IIS 角色
- 打开 服务器管理器(Server Manager)
- 点击 “添加角色和功能”
- 选择 “基于角色或基于功能的安装” → 下一步
- 选择本地服务器 → 下一步
- 勾选 “Web 服务器 (IIS)" 角色
- 展开后建议勾选以下子功能(按需):
- ASP.NET 4.8(若使用 .NET Framework 应用)
- CGI(支持 CGI 脚本)
- 静态内容
- HTTP 错误页
- 默认文档
- 目录浏览(可选)
- 应用程序开发(含 ASP.NET Core 扩展等,视需求而定)
- 展开后建议勾选以下子功能(按需):
- 完成向导并等待安装完成
💡 命令行快速安装(PowerShell,管理员权限):
Install-WindowsFeature -Name Web-Server, Web-Asp-Net45, Web-CGI, Web-StaticContent -IncludeManagementTools
二、准备网站文件
将你的网站代码上传到服务器,例如:
- 路径示例:
C:inetpubwwwrootmysite - 确保文件夹有适当权限(见下文“安全配置”)
| 常见类型处理: | 技术栈 | 注意事项 |
|---|---|---|
| ASP.NET (.NET Framework) | 需安装对应版本 .NET + IIS 模块;检查 web.config |
|
| ASP.NET Core | 需安装 .NET Hosting Bundle;发布为自包含或依赖框架模式 | |
| PHP | 需安装 PHP for Windows + IIS FastCGI 模块 | |
| Node.js / Python / Go 等 | 通常需配合反向X_X(如 Nginx or IIS ARR),或直接用 Kestrel/Flask 等监听端口并通过 IIS 转发 |
三、创建网站与绑定
- 打开 IIS 管理器(运行
inetmgr) - 右键 “网站” → “添加网站”
- 填写信息:
- 站点名称:如
MyWebsite - 物理路径:指向你的网站根目录(如
C:inetpubwwwrootmysite) - 绑定设置:
- 类型:
http或https - IP 地址:
全部未分配或指定 IP - 端口:
80(HTTP)或443(HTTPS) - 主机名(可选):如
www.example.com
- 类型:
- 站点名称:如
- 点击 确定
🔐 如需 HTTPS:
- 生成或导入 SSL 证书(可通过 Let’s Encrypt + ACME client 免费获取)
- 在绑定中启用
https并选择证书- 强制重定向 HTTP→HTTPS(通过 URL Rewrite 规则)
四、配置应用程序池(关键!)
- 在 IIS 中进入 “应用程序池”
- 找到你网站使用的池(新建时可指定)
- 右键 → “高级设置”:
- .NET CLR 版本:匹配你的应用(如 v4.0 或 No Managed Code)
- 托管管道模式:集成 vs 经典(多数现代应用选“集成”)
- 启动参数(ASP.NET Core):可设
ApplicationPoolId等
- 若用 ASP.NET Core,确保已安装 IIS Express / ASP.NET Core Module (ANCM)
✅ 推荐:为新项目创建独立应用程序池,避免影响其他站点。
五、设置文件权限(安全关键)
以 C:inetpubwwwrootmysite 为例:
- 右键文件夹 → 属性 → 安全 → 编辑
- 添加用户组:
IIS_IUSRS(IIS 工作进程账户组)- 赋予:读取 & 执行、列出文件夹内容、读取
- 若需写入(如上传、日志):额外授予 修改 权限(谨慎使用)
- 若使用自定义身份验证(如 Windows 认证),还需配置相应权限
⚠️ 避免给
Everyone或Users过高权限!
六、测试访问
- 浏览器访问:
http://<服务器IP>或http://localhost - 检查:
- 页面是否正常加载?
- 动态功能(登录、数据库连接)是否可用?
- 错误页面是否友好(可自定义 404/500 页)
若失败,查看:
- 事件查看器 → Windows 日志 → 应用程序 & 系统
- IIS 日志:
C:inetpublogsLogFilesW3SVC<SiteID> - 使用 Fiddler 或浏览器开发者工具排查网络/JS 错误
七、进阶优化建议
| 项目 | 建议 |
|---|---|
| 防火墙 | 开放 TCP 80/443 端口(Windows Defender 防火墙) |
| URL 重写 | 安装 URL Rewrite 模块,实现 SEO 友好路由 |
| 性能调优 | 启用 gzip 压缩、静态资源缓存、调整应用程序池回收策略 |
| 备份 | 定期备份 C:inetpubwwwroot 和注册表配置(HKLMSOFTWAREMicrosoftInetStp) |
| 监控 | 结合 System Center、Zabbix 或 Azure Monitor 做健康检查 |
替代方案(非 IIS)
- Nginx + PHP/Node/Python:适合高并发微服务架构
- Docker + IIS Inverse Proxy:容器化部署主流方案
- Azure App Service:云原生无缝迁移(若计划上云)
需要我针对某种具体技术栈(如 ASP.NET Core、Laravel、WordPress)提供详细部署步骤吗?欢迎补充你的应用场景 😊
CLOUD技术博