是的,IIS(Internet Information Services)+ Windows Server 完全可以运行 WordPress,这是微软官方支持且有完善文档的方案。虽然 WordPress 传统上与 LAMP(Linux + Apache + MySQL + PHP)栈关联更紧密,但 Microsoft 已长期优化 IIS 对 PHP 和 WordPress 的支持(包括 Web Platform Installer、PHP Manager、URL Rewrite 模块等),目前在 Windows Server 2016/2019/2022 上部署稳定、性能良好,且可与 Windows 身份验证、AD 集成、Azure 混合云等场景无缝结合。
以下是 生产环境推荐的详细配置步骤(以 Windows Server 2022 + IIS 10 + PHP 8.2+ + MySQL 8.0+ 为例):
✅ 前置要求
- Windows Server 2016 / 2019 / 2022(建议 2022,最新安全与兼容性)
- 管理员权限
- 网络连通性(用于下载组件)
- (可选)已安装 .NET Framework 4.8(IIS 所需)
🛠️ 分步配置流程
1️⃣ 启用 IIS 及必要功能
以管理员身份运行 PowerShell:
# 启用核心 IIS 功能(含 ASP.NET Core 支持,虽非必需但推荐)
Install-WindowsFeature -Name Web-Server,Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-Http-Redirect,Web-Http-Tracing,Web-Security,Web-Filtering,Web-IP-Security,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,Web-Scripting-Tools,Web-Mgmt-Service -IncludeAllSubFeature -IncludeManagementTools
# 启用 URL Rewrite 模块(WordPress 固定链接必需!)
# ⚠️ 注意:此模块需单独下载安装(见下一步)
💡 提示:
Web-Mgmt-Service启用后可通过远程 IIS 管理器管理服务器。
2️⃣ 安装 URL Rewrite 模块(关键!)
- 下载地址:https://www.iis.net/downloads/microsoft/url-rewrite
- 下载
rewrite_amd64.msi(或对应架构版本) - 运行安装(默认路径即可),无需重启 IIS
✅ 验证:打开 IIS 管理器 → 选择服务器节点 → 右侧“模块”中应看到 RewriteModule
3️⃣ 安装并配置 PHP(推荐使用官方 Windows 版本)
强烈建议使用 windows.php.net 的 Non-Thread-Safe (NTS) + VC17 x64 版本(如 PHP 8.2.x 或 8.3.x)
不推荐使用 Web Platform Installer(已停更),避免过时 PHP
步骤:
-
下载 ZIP 包(例:
php-8.2.15-nts-Win32-vs17-x64.zip) -
解压到
C:PHP(路径无空格/中文,如C:PHP82) -
复制
php.ini-production→ 重命名为php.ini -
编辑
php.ini(关键配置):; 基础设置 extension_dir = "C:PHP82ext" date.timezone = "Asia/Shanghai" ; 替换为你所在时区 cgi.fix_pathinfo=0 ; ⚠️ 必须设为 0(防止 CVE-2012-1823) ; 启用 WordPress 所需扩展(取消注释) extension=php_mysqli.dll extension=php_pdo_mysql.dll extension=php_opcache.dll extension=php_curl.dll extension=php_gd.dll extension=php_mbstring.dll extension=php_xml.dll extension=php_zip.dll ; OPcache 优化(生产环境推荐) opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 -
将
C:PHP82加入系统PATH环境变量 -
在 IIS 中注册 PHP:
- IIS 管理器 → 服务器节点 → “PHP Manager”(若未安装,请先装:见下一步)
→ 或手动添加:
“处理程序映射” → “添加模块映射”- 请求路径:
*.php - 模块:
FastCgiModule - 可执行文件:
C:PHP82php-cgi.exe - 名称:
PHP_via_FastCGI - ✅ 勾选“记录请求”(调试用)
- 请求路径:
- IIS 管理器 → 服务器节点 → “PHP Manager”(若未安装,请先装:见下一步)
🔔 PHP Manager for IIS(可选但强烈推荐)
下载地址:https://phpmanager.codeplex.com/(注意:CodePlex 已关闭,改用 GitHub 镜像或直接用 IIS 手动配置)
实际推荐:跳过 PHP Manager,直接用 IIS GUI 或 PowerShell 配置 FastCGI(更可控)
✅ 验证 PHP:在网站根目录新建 info.php,内容 <?php phpinfo(); ?>,浏览器访问 http://yoursite/info.php
4️⃣ 安装数据库(MySQL 或 MariaDB 或 SQL Server + WP插件)
- 推荐 MySQL 8.0+(x64):从 https://dev.mysql.com/downloads/mysql/ 下载 MSI 安装器
- 安装时选择:
Developer Default或自定义 → 勾选MySQL Server+MySQL Workbench- 设置 root 密码(强密码!)
- 配置选项 → 使用
Use Legacy Authentication Method(因 WordPress 默认不支持 caching_sha2_password,除非你手动创建用户指定 auth plugin)
- 创建 WordPress 数据库与用户(推荐使用 MySQL Workbench 或命令行):
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPass123!'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES;
✅ 替代方案:使用 MariaDB(更轻量)或 Microsoft SQL Server + WP Db Abstraction 插件(企业级合规场景)
5️⃣ 部署 WordPress
- 下载最新版 WordPress:https://wordpress.org/latest.zip
- 解压到网站目录(如
C:inetpubwwwrootwordpress) - 设置文件权限(关键!):
- 右键文件夹 → “属性” → “安全” → 编辑 → 添加用户:
IIS_IUSRS:读取 & 执行、列出文件夹内容、读取IUSR:同上(匿名访问用户)- (可选)若需自动更新/插件安装,给
IIS_IUSRS写入权限(仅wp-content和wp-config.php目录,不要给整个根目录写入!)
- 右键文件夹 → “属性” → “安全” → 编辑 → 添加用户:
- 访问
http://your-server-ip/wordpress/,进入 Web 安装向导:- 输入数据库名、用户名、密码、主机(默认
localhost) - 表前缀可保留
wp_或修改增强安全性 - 点击“提交” → “运行安装”
- 填写站点标题、管理员账号密码(务必强密码!)
- 输入数据库名、用户名、密码、主机(默认
6️⃣ 配置固定链接(Permalinks)—— 依赖 URL Rewrite
- WordPress 后台 → 设置 → 固定链接 → 选择“文章名”等非默认结构 → 保存
- IIS 会自动生成
web.config(位于 WordPress 根目录)
✅ 若未生成或 404,请手动创建web.config(放在wordpress/目录下):<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="WordPress Rule" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration>✅ 验证:访问
http://yoursite/post-slug/应正常显示,而非 404
7️⃣ 生产环境加固(必做!)
| 项目 | 推荐操作 |
|---|---|
| HTTPS | 使用 Let’s Encrypt(推荐 win-acme 自动签发)+ 绑定 SSL 证书到站点 |
| PHP 安全 | php.ini 中禁用危险函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source |
| WordPress 安全 | 安装 Wordfence 或 iThemes Security;隐藏 wp-login.php(用插件);定期更新 |
| IIS 安全 | 在 IIS 中禁用 HTTP 方法(如 TRACE, OPTIONS);启用请求过滤;限制上传大小(requestLimits) |
| 备份 | 配置 Windows Server Backup 或使用 UpdraftPlus(含 DB + 文件) |
✅ 验证是否成功
- ✅
http://yoursite/→ 显示 WordPress 首页 - ✅
http://yoursite/wp-admin/→ 可登录后台 - ✅ 发布一篇测试文章 →
http://yoursite/hello-world/可访问 - ✅ 上传图片到媒体库 → 成功显示
- ✅ 安装一个主题/插件 → 无需 FTP(因已配 IIS 权限)
🚫 常见问题速查
| 现象 | 原因 | 解决 |
|---|---|---|
| 白屏/500 错误 | php.ini 语法错误、扩展加载失败、opcache 冲突 |
查看 C:WindowsTempphp-errors.log;临时禁用 opcache 测试 |
| 404(固定链接) | web.config 缺失/错误;URL Rewrite 未安装;规则未生效 |
检查 IIS 是否加载 RewriteModule;确认 web.config 在正确目录;重启 IIS |
| 数据库连接失败 | MySQL 认证插件不兼容(caching_sha2_password) | 创建用户时指定 IDENTIFIED WITH mysql_native_password,或改用 MariaDB |
| 无法自动更新 | wp-content 无写入权限 |
给 IIS_IUSRS 用户赋予 wp-content 及子目录“修改”权限(非完全控制) |
| 上传文件过大 | IIS 请求限制(默认30MB) | IIS → 站点 → “请求筛选” → “编辑功能设置” → 提高“允许的最大内容长度” |
✅ 最佳实践总结
- ✅ 使用 PHP NTS + FastCGI(非 ISAPI)
- ✅ 始终启用 URL Rewrite(WordPress SEO/固定链接基石)
- ✅ 数据库优先选 MySQL 8.0 + mysql_native_password 或 MariaDB 10.6+
- ✅ 权限最小化:
IIS_IUSRS仅需wp-content和wp-config.php写入 - ✅ 强制 HTTPS + HSTS(IIS 中配置)
- ✅ 日志监控:启用 IIS 日志 + PHP 错误日志 + WordPress Debug Log(
wp-config.php中定义define('WP_DEBUG_LOG', true);)
如需自动化脚本(PowerShell 一键部署)、Docker on Windows Server 方案、或与 Azure App Service / AKS 集成方案,我可继续为你提供。欢迎随时追问! 🌐🔧
轻量云Cloud