Windows Server 部署全攻略:中间件、软件与网页发布
Windows Server 部署全攻略中间件、软件与网页发布前言Windows Server 在企业中仍然广泛承载着 .NET 应用、IIS 网站、SQL Server 数据库等关键业务。作为运维实习生你需要掌握在 Windows Server 上安装中间件、部署软件、发布网页的标准操作。本文将带你逐一完成以下任务网页发布IIS 静态网站 / .NET 应用部署中间件部署Nginx、Tomcat、MySQL、Redis 等在 Windows 上的安装与配置软件部署Java 应用、Python 应用、普通 exe 服务的运行防火墙配合端口放行、安全加固系统服务化将程序注册为 Windows 服务实现开机自启环境说明本文操作基于Windows Server 2016/2019/2022部分方法同样适用于 Windows 10/11 专业版。一、网页发布IIS 全流程IISInternet Information Services是 Windows 自带的 Web 服务器尤其适合托管ASP.NET、.NET Core 和静态网站。1.1 安装 IIS 及必要组件通过服务器管理器安装打开「服务器管理器」→「添加角色和功能」。在“服务器角色”中勾选Web 服务器(IIS)弹出的“添加所需功能”对话框点击“添加功能”。在“角色服务”中务必勾选以下常见选项常见 HTTP 功能静态内容、默认文档、目录浏览、HTTP 错误应用程序开发 →ASP.NET 4.7若跑 .NET Framework 应用、ISAPI 扩展、ISAPI 筛选器、.NET Extensibility 4.7运行状况和诊断HTTP 日志、请求监视安全性请求筛选、基本/Windows 身份验证等按需勾选管理工具IIS 管理控制台完成安装并重启通常不需要重启。命令行安装PowerShell 管理员Install-WindowsFeature-Name Web-Server-IncludeManagementTools# 同时安装 ASP.NET 支持Install-WindowsFeature-Name Web-Asp-Net451.2 发布静态网站把你的网站文件如index.html、CSS、JS放到一个目录例如C:\inetpub\wwwroot\mysite。打开 IIS 管理器运行inetmgr。右键“网站” → “添加网站”。网站名称任意描述名。物理路径指向你的网站文件夹。绑定IP 地址默认“全部未分配”、端口默认 80、主机名如www.test.com可选。点击“确定”。如果启动失败可能是端口被占用默认网站占用了 80。可以先停掉“Default Web Site”或修改其端口。浏览器访问http://服务器IP:80即可看到网页。若访问权限不足403 错误需在网站文件夹的“安全”属性中添加IIS_IUSRS或IUSR账户的读取权限。1.3 部署 ASP.NET / .NET Core 应用.NET Framework 应用传统开发给你一个发布好的文件夹包含bin、web.config等。在 IIS 中添加网站物理路径指向该发布文件夹。在网站右侧的“应用程序池”中确认使用的是.NET CLR v4.0的池。如果用到特殊管道模式需在应用程序池“高级设置”中启用 32 位应用程序若程序是 32 位等。.NET Core / .NET 5 应用在服务器上安装ASP.NET Core Hosting Bundle从微软官网下载它会安装 .NET Runtime 和 IIS 模块。发布应用时选择目标运行时为win-x64或portable。在 IIS 中创建网站物理路径指向publish文件夹。应用程序池的“.NET CLR 版本”要设为“无托管代码”因为 .NET Core 是自托管进程。启动网站后访问即可。命令行部署自动化# 创建一个新网站New-IISSite-NameMyApp-PhysicalPathC:\apps\myapp-BindingInformation*:80:myapp.domain.com# 修改应用程序池属性Set-ItemPropertyIIS:\AppPools\MyApp-name managedRuntimeVersion-value二、中间件部署2.1 NginxWindows 版Nginx 官方提供了 Windows 版本的二进制文件解压即用。从 Nginx 官网 下载 Windows 版本zip。解压到C:\nginx不要有空格路径。启动进入C:\nginx目录双击nginx.exe或在 cmd 下执行start nginx。验证浏览器访问http://localhost看到 Nginx 欢迎页。常用管理命令在该目录下重载配置nginx -s reload停止nginx -s stop/nginx -s quit注册为 Windows 服务开机自启下载 WinSW 或使用nssm。将 WinSW 的 exe 命名为nginx-service.exe放入C:\nginx并创建同名.xml配置文件。nginx-service.xml示例serviceidnginx/idnameNginx/namedescriptionNginx Web Server/descriptionexecutableC:\nginx\nginx.exe/executablestopexecutableC:\nginx\nginx.exe/stopexecutablestopargument-s/stopargumentstopargumentstop/stopargumentstartarguments-g daemon off;/startargumentslogpathC:\nginx\logs/logpath/service然后以管理员权限在C:\nginx下运行nginx-service.exe install即可。配置反向代理、静态文件、HTTPS 等与 Linux 版本语法完全一致。2.2 TomcatJava 应用服务器Tomcat 需要 JDK/JRE 环境。假设已安装 JDK 并配置了JAVA_HOME如C:\Program Files\Java\jdk-11。从 Tomcat 官网 下载64-bit Windows zip。解压到C:\tomcat。启动进入C:\tomcat\bin双击startup.bat会弹出命令行窗口显示日志。看到 “Server startup in xxx ms” 表示成功。访问http://localhost:8080看到小猫页面。注册为 Windows 服务以管理员身份打开 cmd进入C:\tomcat\bin。运行service.bat install此时在“服务”中会出现Apache Tomcat 9.0 Tomcat9设置为“自动”即可开机自启。卸载服务service.bat remove部署 WAR 包只需将yourapp.war复制到C:\tomcat\webapps目录下Tomcat 会自动解压部署。访问路径http://IP:8080/yourapp/。与 IIS/Nginx 配合通常会使用 Nginx 或 IIS 作为反向代理将 80 端口的请求转发给 Tomcat 的 8080 端口。2.3 MySQL / MariaDB数据库方法一使用 MSI 安装包简单从 MySQL 官网 下载mysql-installer-community-8.x.x.msi。双击运行选择“Server only”或“Developer Default”。配置步骤选择“Standalone MySQL Server”。认证方式Windows 建议选择“Use Legacy Authentication Method”兼容旧程序。设置 root 密码。配置 Windows Service 名称默认MySQL80勾选“Start the MySQL Server at System Startup”。完成安装后MySQL 作为服务自动启动默认监听 3306 端口。方法二解压绿色版无 GUI适合脚本化下载mysql-8.x.x-winx64.zip解压到C:\mysql。在C:\mysql下创建my.ini配置文件至少包含basedir和datadir。初始化数据库生成 data 目录mysqld --initialize-insecure --console不加--insecure则会生成随机 root 密码。安装服务并启动mysqld --install MySQL80 net start MySQL80后续升级配置修改my.ini重启服务即可。2.4 Redis缓存Redis 官方没有原生 Windows 版但微软维护了 3.x 版本已老旧或使用第三方分支如 tporadowski/redis也可在 Windows Server 上通过 WSL2 或 Docker 运行 Linux 版 Redis。使用第三方 Windows 版推荐生产临时方案长期建议容器化下载 tporadowski/redis releases 的.zip文件如Redis-5.0.14.1.zip。解压到C:\redis。启动redis-server.exe注册服务redis-server.exe --service-install --service-name Redis6379 --port 6379 redis-server.exe --service-start --service-name Redis6379配置文件redis.windows.conf可修改端口、密码等。生产最佳实践在 Windows 上通过 Docker 运行 Linux 版 Redis性能好且版本新。docker run-d--name redis-p 6379:6379 redis:7--requirepass yourpassword并将 Docker 设置为 Windows 服务方式自启动。2.5 RabbitMQ / ActiveMQ 等消息队列这类中间件通常有 Windows 安装包可直接下载.exe安装。以 RabbitMQ 为例安装 Erlang 运行时依赖项。下载并运行 RabbitMQ 安装程序。安装后服务自动启动可通过http://localhost:15672管理界面访问需先启用插件。在生产环境注意修改默认用户和密码。三、软件部署“软件”这里指开发给你的业务程序Java jar、Python 脚本、Node.js 应用、普通 exe 等你需要让它在服务器上稳定运行、开机自启。3.1 把应用注册为 Windows 服务推荐任何可执行程序都可以通过WinSW或nssm变成 Windows 服务。使用 WinSW推荐下载 WinSW 的.exe重命名为myapp-service.exe放到你的应用目录。创建一个同名的.xml文件例如myapp-service.xmlserviceidMyApp/idnameMy Application/namedescription公司主业务服务/descriptionexecutablejava/executablearguments-jar C:\apps\myapp.jar --server.port8080/argumentslogpathC:\apps\myapp\logs/logpathlogmoderoll-by-sizesizeThreshold10240/sizeThreshold/logonfailureactionrestartdelay10 sec//service以管理员身份运行命令提示符进入该目录执行myapp-service.exe install net start MyApp卸载服务myapp-service.exe uninstall。使用 nssmnssm install MyApp C:\apps\myapp\run.bat nssm set MyApp AppDirectory C:\apps\myapp nssm set MyApp DisplayName My Application nssm start MyApp3.2 部署 Java 应用jar 包确保 JDK 已安装java -version可用。将app.jar放到某目录如C:\apps\myapp\。手动运行测试java -jar C:\apps\myapp\app.jar按上节方法注册为 Windows 服务推荐或写一个.bat启动脚本放入“启动”文件夹不推荐无守护。3.3 部署 Python 应用在服务器上安装 Python可从官网下载安装包勾选“Add to PATH”。推荐使用虚拟环境将项目依赖装入venv。部署方式以 Flask 为例直接运行python app.py生产环境应使用waitress或gunicornWindows 不支持 gunicorn可用waitress。用 WinSW 注册为服务executable设为python.exearguments为脚本路径。3.4 部署 Node.js 应用安装 Node.js LTS 版。将项目复制到服务器运行npm install --production。测试node server.js。同样用 WinSW 注册服务executable为node.exearguments为入口文件路径。四、防火墙放行端口Windows 防火墙默认阻止入站流量部署中间件后必须放行对应端口。4.1 图形界面放行最快运行wf.msc打开“高级安全 Windows 防火墙”。点击“入站规则” → “新建规则”。规则类型端口 → TCP → 特定本地端口如80,443,8080。允许连接 → 全选配置文件 → 命名并完成。4.2 PowerShell 命令放行# 放行 80 端口New-NetFirewallRule-DisplayNameHTTP 80-Direction Inbound-Protocol TCP-LocalPort 80-Action Allow# 放行 8080 端口New-NetFirewallRule-DisplayNameTomcat 8080-Direction Inbound-Protocol TCP-LocalPort 8080-Action Allow# 放行 MySQL仅限内网 IP 访问New-NetFirewallRule-DisplayNameMySQL for DBA-Direction Inbound-Protocol TCP-LocalPort 3306-RemoteAddress 192.168.1.100-Action Allow注意云服务器阿里云、腾讯云、AWS还需在云控制台的安全组中放行相同端口。五、网页发布的高级场景5.1 一个服务器跑多个网站主机头绑定在 IIS 中多个网站可以使用相同 IP 和端口通过主机名区分。网站 A绑定www.siteA.com:80物理路径C:\siteA。网站 B绑定www.siteB.com:80物理路径C:\siteB。DNS 需要将这两个域名都解析到服务器 IP。IIS 会根据客户端请求头的 Host 字段分发到对应网站。5.2 反向代理配置IIS ARR 模块如果想把/api请求转发到 Tomcat8080需要安装 ARRApplication Request Routing模块。下载并安装 Microsoft Application Request Routing 3.0 和 URL Rewrite。在 IIS 根级别或网站级别打开“URL 重写”。添加入站规则 → 反向代理规则输入后端服务器地址如127.0.0.1:8080。完成后访问 IIS 的指定路径就会被转发到 Tomcat。常用替代方案直接使用 Nginx 做反向代理更简单IIS 仅用于托管 .NET 应用。5.3 启用 SSL/HTTPS获取 SSL 证书如从云厂商申请或使用 Let’s Encrypt。在 IIS 中选中网站 → 右侧“绑定” → 添加 → 类型选httpsIP 地址不变端口 443选择或导入证书。若要强制 HTTP 跳转 HTTPS可在 web.config 中配置重写规则或使用 URL Rewrite 模块。六、常用运维命令速查PowerShell任务命令安装 IISInstall-WindowsFeature -Name Web-Server -IncludeManagementTools新建 IIS 网站New-IISSite -Name MySite -PhysicalPath C:\web -BindingInformation *:80:查看端口监听netstat -ano | findstr :80放行防火墙端口New-NetFirewallRule -DisplayName Allow 80 -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow查看服务状态Get-Service MySQL80启动/停止服务Start-Service MySQL80/Stop-Service MySQL80注册服务WinSWmyapp-service.exe install查看日志IIS 日志C:\inetpub\logs\LogFiles\TomcatC:\tomcat\logs\NginxC:\nginx\logs\重启服务器Restart-Computer -Force七、总结与学习建议Windows Server 的部署操作和 Linux 有相似逻辑但实现方式不同。你需要重点掌握IIS 的网站创建、应用程序池配置、URL 重写这是 Windows 网页发布的核心。用 WinSW / nssm 将任意程序注册为服务实现开机自启、守护进程。中间件Nginx、Tomcat、MySQL在 Windows 上的安装及服务化。防火墙入站规则的配置确保服务可被访问且安全。多平台思维许多开源中间件Nginx、Tomcat、MySQL在 Windows 上的配置与 Linux 几乎相同只是安装方式不同解压或 MSI。建议你动手搭一套完整的测试环境Windows Server IIS 托管一个静态网站 Nginx 反向代理到 Tomcat 上部署的 Java 应用 MySQL/Redis 后端最后配好防火墙并验证外网可访问。这能覆盖你日常 80% 的部署任务。遇到具体报错随时查看日志事件查看器、IIS 日志、中间件日志通常都能找到原因。加油