WNMP(Windows Nginx MySQL PHP)
转载请注明出处:http://blog.csdn.net/ZDK_csdn/article/details/72395978
下载地址:http://download.csdn.net/detail/zdk_csdn/9845509
把下载好的php压缩包解压到(E:/software/WNMP),这里把解压出来的文件夹重命名成php5。进入文件夹修改php.ini-recommended文件重命名为php.ini,找到
extension_dir = "./ext"
更改为
extension_dir = "E:/software/WNMP/php5/ext"
往下看,再找到
;extension=php_mysql.dll
;extension=php_mysqli.dll
前面指定了php的ext路径后,只要把需要的扩展包前面所对应的“;”去掉,就可以了。这里打开php_mysql.dll和php_mysqli.dll,让php支持mysql。当然前提就是mysql已经安装配置好了。
到这里,php已经可以支持mysql了。
接下来我们来配置php,让php能够与nginx结合。找到
;cgi.fix_pathinfo=1
去掉前面的分号。
这一步非常重要,这里是php的CGI的设置。
把下载好的nginx-1.10.3的包同样解压到(E:/software/WNMP)目录下,并重命名为nginx。打开nginx目录,运行该文件夹下的nginx.exe
2.测试是否启动nginx。打开浏览器访问http://127.0.0.1,没有启动的话,看看80端口有占用没。
接下来配置nginx,让它能够和php协同工作。进入nginx的conf目录,打开nginx的配置文件nginx.conf,找到
location / {
root html; #这里是站点的根目录
index index.html index.htm;
}
改为
location / {
root E:\software\WNMP\www; #这里是站点的根目录
index index.html index.htm index.php;
}
再往下,找到
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#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 E:/software/WNMP;。再把标记为红色的/scripts改为$document_root
,这里的$document_root
就是指前面“root”所指的站点路径,这是改完后的:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root E:\software\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;
fastcgi_read_timeout 1d;
}
保存配置文件,就可以了。
nginx+php的环境就初步配置好了,来跑跑看。我们可以输入命令E:/software/WNMP/php5/php-cgi.exe -b 127.0.0.1:9000 -c E:/software/WNMP/php5/php.ini
来启动php,并手动启动nginx,当然也可以利用脚本来实现。
到站点目录下(E:\software\WNMP\www),新建一个phpinfo.php的文件,在里面编辑
phpinfo();
?>
保存后,打开浏览器输入“http://localhost/phpinfo.php”,如果看到下图则说明成功了。
把下载好的RunHiddenConsole.zip包解压到(E:\software\WNMP)目录下,RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。然后来创建脚本,命名为“start.bat”,我们在Notepad++里来编辑它
@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole E:/software/WNMP/php5/php-cgi.exe -b 127.0.0.1:9000 -c E:/software/WNMP/php5/php.ini
echo Starting nginx...
RunHiddenConsole E:/software/WNMP/nginx/nginx.exe -p E:/software/WNMP/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
这时你可能会发现一个问题,PHP-cgi.exe会在响应一段时间请求后自动挂掉。怎么解决呢?接下来就介绍一个神奇的东西—xxfpm进程管理器.
把下载下来的xxfpm放到(E:\software\WNMP)目录下。然后更改RunHiddenConsole目录下的start.bat和stop.bat。如下:
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 E:/software/WNMP/php5/php-cgi.exe -b 127.0.0.1:9000 -c E:/software/WNMP/php5/php.ini
RunHiddenConsole E:/software/WNMP/xxfpm/bin/xxfpm.exe "E:/software/WNMP/php5/php-cgi.exe -c E:/software/WNMP/php5/php.ini" -n 2 -i 127.0.0.1 -p 9000
echo Starting nginx...
RunHiddenConsole E:/software/WNMP/nginx/nginx.exe -p E:/software/WNMP/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
taskkill /F /IM xxfpm.exe > nul
exit
简单介绍一下
上面代码中的-n 2指的是开两个php-cgi.exe进程;
-p 9000指的是PHP通过9000端口传输;
:冒号代表注释的意思;
文件路径中斜杠要使用“/”而不能使用“\”;
ok,这个时候打开进程管理器你会发现开启了两个CGI进程。此时通过任务管理器CGI进程是关闭掉的,必须先关闭xxfpm.exe或者点击RunHiddenConsole目录下的stop.bat.
解决办法: 32位操作系统把MSVCR110.dll放入C:\Windows\System32目录下;64位操作系统把MSVCR110.dll放入C:\Windows\SysWOW64目录下。