一、需要准备的程序包:
Nginx:http://nginx.org,这里我下载的最新版1.11.13
php:http://windows.php.net/download (注意:Nginx下php以fastcgi方式运行,故下载非现成安全nts的php包)
RunHiddenConsole:RunHiddenConsole.zip 用来编写快速启动、停止
二、安装与配置,新建目录D:\wnmp
1.php的安装与配置:
将下载好的php包php-5.6.30-nts-Win32-VC11-x64,解压缩并重命名为php5,形成路径D:\wnmp\php5。进入文件夹修改php.ini-development为php.ini。用sublime打开,定位到 ;extension_dir = "/ext",去掉前面分号并修改为 extension_dir = "D:/wnmp/php5/ext"。
往下找到
;extension=php_mysql.dll
;extension=php_mysqli.dll
去掉前面";",添加mysql扩展,使php支持mysql。后续可根据需要添加其他扩展,都是去掉前面的分号。
接下来,配置php,使其能与Nginx结合。找到 ;cgi.fix_pathinfo=1
cgi.fix_pathinfo=1
2.nginx的安装与配置:
将下载好的nginx-1.11.13的包解压到wnmp目录,命名为nginx。进入nginx/conf目录,打开配置文件nginx.conf,找到
location / {
root html; #这是站点的根目录,在nginx/html
index index.html index.htm;
}
更改为:
location / {
root D:/wnmp/www; #指定站点根目录为D:/wnmp/www
index index.php index.html index.htm; #添加index.php,优先解析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 html; 更改为 root D:/wnmp/www; 再将 /scripts 改为 $document_root,这里的"$document_root"就是前面"root"所指定的站点路径。结果如下:
location ~ \.php$ {
root D:/wnmp/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
保存配置文件,就可以了。这样,Nginx+PHP的环境就初步配置好了。可以输入命令
来启动php,并手动启动nginx,在D:\wnmp\www目录下新建phpinfo.php文件来测试是否生效。
3、编写快捷启动、停止脚本
把下载好的RunHiddenConsole.zip文件解压缩放在D:/wnmp目录下(或nginx目录下),RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,同时脚本中开启的进程不被关闭。创建脚本,命名为"start.bat",内容为:
@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为Windows环境变量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole D:/wnmp/php5/php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/php5/php.ini
echo Starting nginx...
RunHiddenConsole D:/wnmp/nginx/nginx.exe -p D:/wnmp/nginx
再创建一个名为"stop.bat"的脚本用来关闭nginx和php:
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > null
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > null
exit
完成后,D:/wnmp目录是这样的:
这样,服务脚本都创建完毕。双击start.bat,可以看到进程管理器中有两个nginx.exe进程和一个php-cgi.exe进程。
三、测试:在站点目录 D:/wnmp/www下,新建文件phpinfo.php,内容如下:
<?php
phpinfo();
?>
保存后,浏览器访问“http://localhost/phpinfo.php”,看到如下信息,说明windows下Nginx+php开发环境已经配置成功!
测试mysql数据库连接:mysql服务的问题请查看另一篇。在 D:/wnmp/www 下,新建index.php文件,内容如下:
<?php
if (mysqli_connect("localhost","root","root")) {
echo "successful!";
}else{
echo "error...";
}
?>
浏览器防问"http://localhost/index.php",看到如下提示 successful!, 说明wnmp开发环全部配置成功!
改进:上面第3步,编写快捷启动的脚本时,用 %~dp0 代替绝对路径 D:/wnmp。
@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为Windows环境变量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole %~dp0/php5/php-cgi.exe -b 127.0.0.1:9000 -c %~dp0/php5/php.ini
echo Starting nginx...
RunHiddenConsole %~dp0/nginx/nginx.exe -p %~dp0/nginx
%~dp0 指代当前盘符加路径,只能用在批处理文件.bat中。作用同%cd%, 但%cd% 可以用在批处理文件中,也可以用在命令行中。
这样,当 wnmp 文件夹路径变动时(如从D盘移动到E盘),就不必再改动脚本文件。