Windows下nginx启动wordpress

所需软件: Nginx+PHP7+WordPress

1.Nginx https://nginx.org/en/download.html,官网下载

2.PHP7 PHP官网下载 http://windows.php.net/download#php-7.0.
由于nginx下php是以FastCGI方式运行,所以我们的下载费线程安全也就是nts的php,我下载的是php7.2.0

3.WordPress 官网下载即可 https://cn.wordpress.org/download/,注意服务器和PHP,SQL数据库版本要求

Nginx+PHP环境配置

Nginx是一个反向代理的web容器,所以需要一个真正的web服务器才能解析动态网页内容,而这里PHP就是使用fastcgi来充当真正的web服务器,而我们接下的php启动命令将它运行在9000端口上,因此要在nginx.conf中有一个fastcgi_pass 127.0.0.1:9000对应这个服务~

配置nginx.conf (nginx\conf目录下)

添加index.php默认首页,在location /模块中的index下增加index.php:

location / {
root html;
index index.html index.htm index.php;
}


添加php解析设置

取消对location ~ .php$的注释,修改如下:

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

其中注意的是,fastcgi_param项中,默认配置 /scripts需要改成$document_root,$document_root指的是上面配置的root项。
其中$document_root值root对应的值~

这两个配置都没有改root的值,所以对应的文件路径是nginx目录下的html文件夹下~如果要放在别的位置,可以修改root的值。

————————————————————————
配置PHP的php.ini

在PHP目录下找到php.ini-development,重命名为php.ini

参考一
extension_dir = "ext"
cgi.fix_pathinfo=1
extension=php_mysql.dll
extension=php_mysqli.dll

参考二
找到cgi.fix_pathinfo=1,去掉前面的;
找到extension_dir = "ext",去掉前面的;
找到extension=mysqli,去掉前面的;(当前版本只增加了这一个extension,如果有需要可以自行增加其他)

(phpstudy的php配置好的版本不用配置Ini文件了,直接下载-php7.3.4nts https://www.lanzoux.com/iqxKlfclh6b)

注意php版本不一样php.ini 设置可能不同,如果不知道怎么设置建议直接使用phpstudy中的php。直接使用没有报错。

注意需要改下载phpstudy里面的php.ini里面的这两个绝对路径位置

extension_dir="D:\Website\PHP\ph\ext"
session.save_path="D:\Website\PHP\tmp\tmp"

————————————————————————
session.save_path (要绝对路径,不能相对路径)

; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
; http://php.net/session.save-path
session.save_path = "session.save_path="D:\Website\PHP\tmp\tmp"

; Whether to use strict session mode.
; Strict session mode does not accept an uninitialized session ID, and
; regenerates the session ID if the browser sends an uninitialized session ID.
; Strict mode protects applications from session fixation via a session adoption
; vulnerability. It is disabled by default for maximum compatibility, but
; enabling it is encouraged.
; https://wiki.php.net/rfc/strict_sessions
session.use_strict_mode = 0

————————————————————————

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
extension_dir = "D:\Website\PHP\php\ext"

; Directory where the temporary files should be placed.
; Defaults to the system default (see sys_get_temp_dir)
;sys_temp_dir = "/tmp"

————————————————————————
测试是否成功
执行cmd命令进入到php所在的目录,再执行php-cgi.exe -b 127.0.0.1:9000 -c php.ini即可启动php~

测试Nginx与PHP是否集成成功

(运行报错提示缺少 vcruntime140.dll, 安装库 Visual C++ 2015 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145)

在root对应的路径下新建一个info.php,内容为:

<?php
phpinfo();

在浏览器输入localhost/info.php:得到 php版本信息页面。
————————————————————————


隐藏控制台启动项目

由于PHP启动后一直开着很不方便,可以通过脚本将Nginx启动与PHP启动绑定在一起,而PHP的后台运行则通过RunHiddenConsole.zip来实现

下载RunHiddenConsole
RunHiddenConsole_含写好的脚本.zip 下载地址
https://www.lanzoux.com/i0Ehvfcm0fe

启动脚本start.bat:
@echo off
echo Starting PHP FastCGI...
RunHiddenConsole.exe D:/Website/PHP/php/php-cgi.exe -b 127.0.0.1:9000 -c D:/Website/PHP/php/php.ini
echo Starting nginx...
D:\Website\nginx\nginx.exe

注意修改对应的nginx路径


停止脚本stop.bat:
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit

RunHiddenConsole.exe/start.bat/stop.bat 三文件都放 D:\Website\nginx 目录内
之后只需要运行start.bat和stop.bat就可以启动和关闭nginx+php
————————————————————————
整个运行环境下载:
https://www.lanzoux.com/iISm6fcmmhi

————————————————————————
官方运行环境下载:Nginx+PHP7+WordPress
PHP7.4 https://windows.php.net/downloads/releases/php-7.4.13-nts-Win32-vc15-x64.zip
Nginx https://nginx.org/download/nginx-1.18.0.zip
WordPress https://cn.wordpress.org/latest-zh_CN.zip

————————————————————————
Nginx虚拟目录alias和root目录

nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的:
1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;
3)使用alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上"/"符号!!
4)alias虚拟目录配置中,location匹配的path目录如果后面不带"/",那么访问的url地址中这个path目录后面加不加"/"不影响访问,访问时它会自动加上"/";
但是如果location匹配的path目录后面加上"/",那么访问的url地址中这个path目录必须要加上"/",访问时它不会自动加上"/"。如果不加上"/",访问就会失败!
5)root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。

举例说明(比如nginx配置的域名是www.iforn.cn):

=============================举例说明=============================
示例一
location /huan/ {
alias /home/www/huan/;
}

在上面alias虚拟目录配置下,访问http://www.iforn.cn/huan/a.html实际指定的是/home/www/huan/a.html。
注意:alias指定的目录后面必须要加上"/",即/home/www/huan/不能改成/home/www/huan

上面的配置也可以改成root目录配置,如下,这样nginx就会去/home/www/huan下寻找http://www.iforn.cn/huan的访问资源,两者配置后的访问效果是一样的!
location /huan/ {
root /home/www/;
}

示例二
上面的例子中alias设置的目录名和location匹配访问的path目录名一致,这样可以直接改成root目录配置;那要是不一致呢?
再看一例:
location /web/ {
alias /home/www/html/;
}

访问http://www.iforn.cn/web的时候就会去/home/www/html/下寻找访问资源。
这样的话,还不能直接改成root目录配置。
如果非要改成root目录配置,就只能在/home/www下将html->web(做软连接,即快捷方式),如下:
location /web/ {
root /home/www/;
}

# ln -s /home/www/web /home/www/html //即保持/home/www/web和/home/www/html内容一直

所以,一般情况下,在nginx配置中的良好习惯是:
1)在location /中配置root目录;
2)在location /path中配置alias虚拟目录。

如下一例:
server {
listen 80;
server_name www.iforn.cn;
index index.html index.php index.htm;
access_log /usr/local/nginx/logs/image.log;

location / {
root /var/www/html;
}

location /haha { //匹配的path目录haha不需要真实存在alias指定的目录中
alias /var/www/html/ops/; //后面的"/"符号一定要带上
rewrite ^/opp/hen.php(.*)$ /opp/hen.php?s=$1 last;
# rewrite ^/opp/(.*)$ /opp/hen.php?s=$1 last;
}

location /wang { //匹配的path目录wang一定要真实存在root指定的目录中(就/var/www/html下一定要有wang目录存在)
root /var/www/html;
}

}


=============================举例说明=============================
示例二

[root@web01 vhosts]# cat www.iforn.cn.conf
server {
listen 80;
server_name www.iforn.cn;

access_log /data/nginx/logs/www.iforn.cn-access.log main;
error_log /data/nginx/logs/www.iforn.cn-error.log;

location / {
root /data/web/kevin;
index index.php index.html index.htm;
}

location /document/ {
alias /data/web/document/;
}

}


[root@web01 vhosts]# ll /data/web/
total 4
drwxrwxr-x 2 app app 33 Nov 22 10:22 document
drwxrwxr-x 4 app app 173 Sep 23 15:00 kevin

如上配置后,则:
访问http://www.iforn.cn/admin 就会找到/data/web/kevin/admin目录
访问http://www.iforn.cn/document 就会找到/data/web/document 目录 (里面是一些静态资源)

  

参考文档: https://blog.csdn.net/weixin_45733134/article/details/107839194

 

posted @   JensenZ  阅读(654)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示