前面的博客 容器中搭建WordPress介绍了在容器中搭建WordPress,如果使用的是Windows环境而不是Linux,则可以使用Windows版的nginx来搭建WordPress。

根据WordPress的安装 要求,需要准备以下软件环境:

  • PHP版本7.3+以上
  • MySQL版本5.6+或者MariaDB版本10.1+以上

一、下载必需软件

1. PHP

目前最新的PHP为 PHP 8.1,可以根据自己的系统选择安装不同的版本,这里笔者选择的是 VS16 x64 Thread Safe

2. 数据库

这里以常用的Mysql为例,去 mysql官网下载最新Windows版本的安装包。

3.nginx

nginx官网下载最新稳定版本的nginx。

4. WordPress

目前最新版本为 WordPress 6.0

二、安装配置

所有下载的软件中,只有Mysql是需要安装的,php以及nginx都是免安装的,直接解压即可。Mysql的的安装也非常简单,网上也比较多相关的教程,这里就不再赘述了。

我们可以新建一个目录,比如Web,把nginx以及php都放在该目录下,然后把WordPress放在nginx目录中,如下的目录结构:

1Web
2|__nginx
3|    |__wordpress
4|__php

1. 配置PHP

把php目录中的php.ini-production复制一份,并改名为php.ini,修改配置,打开如下配置项:

1extension_dir = "ext"
2cgi.fix_pathinfo=1
3extension=bz2
4extension=curl
5extension=mysqli
6extension=pdo_mysql

如果需要在线安装主题,可能需要将配置:

1max_execution_time = 30

修改长一些,因为网络访问可能会比较慢。

为了方便启动PHP CGI服务给nginx使用,可以创建一个处理文件来运行下面的命令:

1php-cgi.exe -b 127.0.0.1:9000 -c php.ini

2. 配置nginx

 1server {
 2        listen       80;  # 监听端口
 3        charset utf-8;  # 设置字符集,Windows下也可以设置为GBK,因为Windows的默认字符集就是GBK
 4        ……
 5        location / {
 6            root wordpress;  # 设置站点的根目录
 7            index index.php; 
 8        }
 9        location ~ \.php$ {
10           root           wordpress; # 设置PHP的根目录
11           fastcgi_pass   127.0.0.1:9000; # 设置PHP的处理URL,需要与实际PHP的CGI服务端口一致
12           fastcgi_index  index.php;
13           fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
14           include        fastcgi_params;
15        }
16 }

3. 安装配置WordPress

通过前面的配置,启动PHP GCI服务,再启动nginx,就可以通过:127.0.0.1访问WordPress了,就与前面的博客 容器中搭建WordPress中的 初始化WordPress一样了,这里不再赘述。

至此,我们就可以愉快的玩WordPress了。但是发布的文章固定链接形式为:http://127.0.0.1/?p=123,如下图所示:

如果我们使用其它的形式,就会出现无法访问的情况。此时需要修改nginx配置,添加如下配置:

 1server {
 2        ……
 3        location / {
 4            ……
 5            if (-f $request_filename/index.html){   
 6                rewrite (.*) $1/index.html break;   
 7            }   
 8            if (-f $request_filename/index.php){   
 9                rewrite (.*) $1/index.php;   
10            }   
11            if (!-f $request_filename){   
12                rewrite (.*) /index.php;   
13            }   
14        }
15        rewrite /wp-admin$ $scheme://$host$uri/ permanent; 
16 }

重启nginx即可。