搜索全站
安装部署 10 分钟阅读

Windows IIS 部署 WordPress 完整教程:PHP、MySQL 与伪静态配置

在 Windows Server + IIS 上部署 WordPress 的完整流程:安装 PHP 与 MySQL、配置 FastCGI、编写 web.config 伪静态规则、设置目录权限解决无法上传与安装插件问题,并给出 IIS 环境下常见 500、404、权限报错的排查方法。

U
UFO_PF 2019-12-03 · 阅读 10 分钟
Wi 安装部署
阅读提示
本文约 3,759 字,预计阅读 10 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:什么样的场景还需要在 IIS 上跑 WordPress

大多数 WordPress 站点跑在 Linux 上,但有些场景躲不开 Windows:企业内部系统要与 .NET 服务共存、客户服务器只有 Windows Server、离线内网环境只能用现有 Windows 主机。

IIS 跑 WordPress 完全可行,官方也支持。真正的差异在两处:URL 重写靠 web.config 而不是 .htaccess,以及 NTFS 权限模型与 Linux 完全不同。

原理分析:IIS 与 Linux 环境的核心差异

Linux 下是 Nginx/Apache → PHP-FPM;Windows 下是 IIS → FastCGI → php-cgi.exe。

规则文件也不同:Apache 读 .htaccess,Nginx 靠 server 块,IIS 读站点根目录下的 web.config(XML 格式)。所以网上那些 .htaccess 规则不能直接抄,要翻译成 IIS 的 <rewrite> 节点。

权限方面,IIS 用 IIS_IUSRS 组和应用程序池标识(通常是 IIS AppPool\你的站点名)来访问文件。WordPress 要写 wp-content,就必须给这个身份写权限。

保姆级实操

第一步:安装 IIS 与 URL Rewrite

服务器管理器 → 添加角色和功能 → Web 服务器(IIS),勾选”应用程序开发”下的 CGI。然后单独安装 URL Rewrite Module 与 PHP Manager(可选)。

第二步:安装 PHP

推荐用官方 Non-Thread-Safe 版本,解压到 C:\PHP。修改 php.ini:

extension_dir = "C:\PHP\ext"
extension=mysqli
extension=mbstring
extension=gd
extension=curl
extension=openssl
extension=intl
extension=zip
extension=fileinfo

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
cgi.fix_pathinfo = 1
date.timezone = Asia/Shanghai

第三步:IIS 注册 FastCGI

IIS 管理器 → 服务器节点 → 处理程序映射 → 添加模块映射:

  • 请求路径:*.php
  • 模块:FastCgiModule
  • 可执行文件:C:\PHP\php-cgi.exe
  • 名称:PHP_via_FastCGI

第四步:安装 MySQL 并建库

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;

第五步:部署 WordPress 文件

解压到 C:\inetpub\wwwroot\mimangfei(或自定义目录),IIS 管理器里添加网站,物理路径指向它。

第六步:写 web.config 伪静态

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="WordPress" patternSyntax="Wildcard">
          <match url="*" />
          <conditions>
            <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>
    <defaultDocument>
      <files>
        <clear />
        <add value="index.php" />
      </files>
    </defaultDocument>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="67108864" />
      </requestFiltering>
    </security>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>

注意 maxAllowedContentLength 单位是字节,67108864 = 64MB。它和 php.ini 的 upload_max_filesize 是两道独立的门,都要放开。

第七步:配置权限

这是 IIS 环境最容易卡住的一步。打开 wp-content 目录属性 → 安全 → 编辑 → 添加:

IIS AppPool\你的应用程序池名称

给予”修改”权限。命令行方式:

icacls "C:\inetpub\wwwroot\mimangfei\wp-content" /grant "IIS AppPool\mimangfei:(OI)(CI)M" /T

常见踩坑与失败案例

  1. 内页 404 —— URL Rewrite 模块没装,或 web.config 编码不是 UTF-8(带 BOM 也可能出错)。
  2. 安装插件提示需要 FTP —— 权限没给对,或 wp-config.php 里加 define('FS_METHOD', 'direct'); 可绕过凭据弹窗。
  3. 500.0 错误 —— 多半是 php-cgi.exe 崩溃。看 C:\PHP 下的日志,常见是 VC++ 运行库缺失,装对应版本的 Visual C++ Redistributable。
  4. 案例:某企业内网站点,上传图片总是失败。排查发现是 IIS 的 maxAllowedContentLength 默认 30MB 没改,而 php.ini 已改成 64M,两者取小值生效。
  5. 中文文件名乱码 —— Windows 下 PHP 处理中文文件名需要确保文件系统编码一致,建议上传前重命名,避免中文路径。
  6. 性能问题 —— Windows 下 PHP 性能通常低于 Linux 同配置,一定要开 OPcache 和页面缓存插件。

总结

IIS 部署 WordPress 在技术上是完全可行的,关键是跨过三道坎:FastCGI 注册、web.config 重写规则、NTFS 权限。如果条件允许,我仍然建议把 WordPress 放在 Linux 上,把 Windows 留给 .NET 服务;如果必须共存,至少要做动静分离和页面缓存,避免 IIS 成为瓶颈。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。