记一次将 WordPress 博客迁移到 IIS 的全过程
IIS 并不是很先进的技术,本文仅做参考

我最近发现访问 hexo+vue 博客的速度是越来越慢了,甚至往往有卡不出来页面的情况,于是心血来潮,将博客转移到了动态网站,Microsoft Azure 有 200 美元的试用期(但是后来发现 200 美元用的太快了ヽ⁠༼⁠⁰⁠o⁠⁰⁠;⁠༽⁠ノ),故暂时选择了它。在配置虚拟机时因为我还有其他用途,所以我就选择了 Windows Server 服务器。

本来计划继续使用宝塔面板的,可是后来我发现 Windows 并不是很适合运行宝塔和 nignx,常常会有大大小小的报错。考虑到未来要套 Azure 的 CDN,继续折腾过于麻烦,就想起来同为微软门下的 Internet Information Services (IIS) 10

简单的翻阅了一下它的文档,貌似在步入 10.0 版本后就进入了缓慢更新,是在 Server 2016 版本的携带的。当然,这并不重要,你可以质疑 IIS 的更新速度,但不可以质疑 IIS 的能力。

1. 配置 IIS

Windows 设备选择 “打开或关闭 Windows 功能”,Windows Server 在 “服务器管理器” 选择 “添加角色和功能”,然后勾选 Web Server (IIS) 功能,同时务必勾选其下的 CGI 模块

WordPress 是基于 php 开发的,所以选择以 fast-cgi 的方式运行 php 程序。在这里,我们需要准备 php 的压缩包(推荐 8.0 版本及以上)并解压,WordPress 需要的 php 插件众多,可以在 所需插件 查看。然而一个一个手动编译插件太麻烦了,我从先前的宝塔试验中“借”了一个已经配置好的 php,并打包成了压缩包,大家可以在 php 8.1.16 直接下载解压,无需再次配置文件。

接下来打开 IIS 管理器,中间窗口选择“处理程序映射”,然后最右边选择“添加模块映射”。可执行路径请选择 php 路径中的 php-cgi.exe,模块填入 FastCgiModule,请求路径为 *.php,名称任意。

若弹出了对话框,请选择“是”。

接下来返回上一步,选择 “默认文档”,然后 “添加”,名称填写 index.php 。

完成后的样式

你正在成功!

接下来在左侧栏选择 网站,然后 添加网站。网站名称和物理路径都可以自定义,下方绑定栏暂时先不做处理,方便调试。

2. 部署网站

首先,请自行配置 MySQL 数据库,可以参阅文档:https://dev.mysql.com/doc/

然后下载 WordPress 压缩包:https://cn.wordpress.org/download/,并解压在上文配置的文件夹中。

这时候可以在 IIS 启动并初始化网站了。

3. 后期维护

i. URL 重写

当在 WordPress 中设置 “固定链接” 时,iis 会抛出 404 错误,此时我们需要安装 URL 重写模块(https://www.iis.net/downloads/microsoft/url-rewrite,页底下载)

然后打开与 WordPress 文件位于同一目录中的web.config 文件(没有请创建),将以下 XML 部分复制并粘贴到 system.webServer 元素中:

<rewrite>
    <rules>
        <rule name="Main 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>

这时候保存,然后重启网站即可。

ii. 更新

经过测试,我发现 WordPress 的更新不能很好的在 iis 上工作,可以通过以下方法更新:

解压 WordPress 安装包,删除 wp-include 文件夹,然后复制到网站目录替换已经存在的文件即可。

上一篇
下一篇