windows下php+nginx的wordpress配置教程和问题解决
介绍:
我在windows下安装wordrpress
环境:
windows10
php8
mysql8
nginx1.26
受启发于,在此基础上修改整理:
https://www.cnblogs.com/hanzohuang/p/18067525
教程:
1、安装对应的win平台的环境安装包(免安装版)
php-8.3.11-Win32-vs16-x64
mysql8
nginx1.26.0
wordpress的zip包
2、windows版的nginx只需要解压即可,修改nginx.conf文件为:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 3000;
server_name 127.0.0.1;
location / {
root C:/Users/test/Desktop/excelSystem/tools/nginx-1.26.0/nginx-1.26.0/html;
index index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:8092/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name 192.168.1.2;
set $root C:/Users/test/Desktop/E-learning/tools/wordpress ;
location / {
root $root;
autoindex on;
index index.php index.html index.htm;
try_files $uri $uri/ =404;
#设置伪静态
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root C:/Users/test/Desktop/E-learning/tools/wordpress; # 设置为wordpress的位置
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME C:/Users/test/Desktop/E-learning/tools/wordpress$fastcgi_script_name; # 修改为$document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name; # 修改为$document_root$fastcgi_script_name;
include fastcgi_params;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
}
}
解释:
我的3000端口跑了一个springboot项目,后端地址为8092
需求是将wordpress跑在本机的80端口默认访问【还得是公司小气,没有服务器,只有很多笔记本让我们用作服务器的部署机……】
部署机的ip地址为内网下的192.168.1.2
wordpress安装包直接在xxx/wordpress文件夹下解压即可
3、php安装好后修改php.ini
进入php文件夹,找到php.ini-development
配置文件并复制为php.ini
。
-
搜索
extension_dir
,找到第778行的内容;extension_dir = "ext"
删去最开始的
;
,将ext
改为php中的真实路径extension_dir = "C:\server\php\ext"
-
搜索
cgi.fix_pathinfo
,找到第815行内容;cgi.fix_pathinfo=1
删去
;变成
cgi.fix_pathinfo=1
-
添加扩展
php_mysqli.dll
因为配置文件中没有找到该项,于是我们自行添加至任意位置即可,为了方便管理,我放在
extension
项的末尾(第975行)。直接加入以下两行并保存【或者取消改行注释】;mysql extension extension=php_mysqli.dll
4、编写bat文件,自启动服务
- restart-nginx.bat
echo Stopping nginx... cd /d "C:\Users\test\Desktop\excelSystem\tools\nginx-1.26.0\nginx-1.26.0" taskkill /F /IM nginx.exe > nul nginx.exe
-
start-php.bat
@echo off set PHP_FCGI_MAX_REQUESTS = 1000 echo Starting PHP FastCGI... rem 分别为php-cgi.exe和php.ini的路径 ,-b,-c等参数必须保留且注意前后空格 php-cgi.exe -b 127.0.0.1:9000 -c php.ini
-
stop-php.bat
@echo off echo Stopping PHP FastCGI... taskkill /F /IM php-cgi.exe > nul exit
5、先点击restart-nginx.bat,然后关闭窗口。再点击start-php.bat,不可关闭该黑窗口
6、安装dbeaver软件,连接本地的数据库,创建名称为wordpress的数据库,并在最开始解压的worpress压缩包里的顶级文件夹下,修改wp-config-sample.php。修改相应的数据即可。
【注意:该步也可不做,在安装时,安装程序会自动要求你指定】
7、访问192.168.1.2/wp-admin 完成!
问题:
1、除了主页,打开其他页面是404 not found Nginx
解决:出现这个问题是因为我的Wordpress之前用的服务器是apache+PHP组合,换了服务器后变成了Nginx+PHP,所以我判断是伪静态出了问题。如果大家要排查确认是不是伪静态的问题,可以将wordpress固定链接改为 “朴素” 数字型,正常情况下访问二级页面就不会有问题了。
针对这个问题官方是有解决方案的,在Nginx的配置文件中location段添加以下代码即可:
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
PS:
一定不要乱修改wordpress里的设置中的固定链接,默认为文章名称,一旦乱修改,会造成404打不开后台的情况,要么修改数据库,要么删除wordpress文件夹下的.htacess文件,要么重新安装。