之前使用nginx和php架设Web环境都是在Linux系统上,最近我尝试了一下在Windows系统上进行这项操作。在这记录一下。以便于以后查阅。
软件安装
Nginx
nginx下载地址:http://nginx.org/en/download.html
你可以在上面的官方地址中下载最新版nginx,我使用的是1.17.6版本(nginx-1.17.6.zip)。
下载zip压缩包后将其解压,把它放在你喜欢的位置,双击里面的nginx.exe就可以运行。
我的nginx路径为C:
ginx-1.17.6
nginx运行后,用浏览器打开http://127.0.0.1 ,正常的话就可以看到nginx的欢迎页

PHP
PHP与Nginx一样,也是下载一个压缩包,下载地址:http://php.net/downloads.php ,nginx下PHP是以FastCGI的方式运行,注意我们需要下载非线程安全版本(Non Thread Safe,nts)。
这里我使用的版本是php-7.2.26-nts-Win32-VC15-x64.zip。将其解压并放在你喜欢的位置,这里假设为C:\php-7.2.26-nts-Win32-VC15-x64。
环境配置
创建一个文件夹作为网站的运行目录,这个目录后面会多次用到,这里我的是C:\www。
Nginx
在Nginx根目录下找到conf目录,编辑器打开其中的nginx.conf
- 找到下面这个配置块
location / { root html; index index.html index.htm; }将其修改为如下,注意修改相关字段
location / { root C:\www; index index.html index.htm index.php; } - 找到下面这个配置块
#location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; # }将每一行的
#去掉,然后修改root值为C:\www,再把/scripts替换为$document_root,$document_root就是指前面root所指的站点路径,改完后应该如下location ~ \.php$ { root C:\www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
PHP
- 在php根目录下找到
php.ini-development文件,复制一份在当前目录并且重命名为php.ini - 编辑
php.ini,找到;cgi.fix_pathinfo=1这一行,去掉前面的分号。
运行与测试
运行原理
因为nginx是一个反向代理的web服务器,因此它其实必须依赖一个真正的web服务器才能执行动态的网页内容,因此这里php就是使用fastcgi来充当这个真正的web服务器,它运行在9000端口上,这也是为什么nginx.conf中有这样一句fastcgi_pass 127.0.0.1:9000;,知道这个原理后,下面的思路就很明确了,打开fastcgi,然后再打开nginx就行了
- 运行nginx
双击nginx目录(
C: ginx-1.17.6)中的nginx.exe就可以运行nginx - 运行fastcgi
在CMD(命令提示符)中切换到PHP的目录(
C:\php-7.2.26-nts-Win32-VC15-x64),然后执行如下命令php-cgi.exe -b 127.0.0.1:9000 -c php.ini - 测试
在网站目录(
C:\www)下新建一个PHP文件,例如hello.php,然后向PHP文件中写入如下内容<?php echo "hello world"; ?>在浏览器访问http://127.0.0.1/hello.php ,网页输出内容”hello world”说明配置成功。
补充
由于执行php-cgi.exe -b 127.0.0.1:9000 -c php.ini后需要控制台一直处于开启状态,不是很方便。这时需要一个小工具RunHiddenConsole.zip来让它在后台运行。
下载上面的zip压缩包后解压,解压出来3个文件,如下图
然后需要修改一下start_nginx.bat,内容如下
start_nginx.bat (将其中的nginx和PHP路径修改为自己的路径)
@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole C:\php-7.2.26-nts-Win32-VC15-x64\php-cgi.exe -b 127.0.0.1:9000 -c C:\php-7.2.26-nts-Win32-VC15-x64\php.ini
echo Starting nginx...
RunHiddenConsole C:
ginx-1.17.6
ginx.exe -p C:
ginx-1.17.6
请仔细检查路径是否更改正确。 如果一切正常的话,之后你就可以靠双击start_nginx.bat来启动nginx和PHP,想关闭的时候你可以双击stop_nginx.bat,nginx和PHP就都关闭了。
REFERENCE