windows平台中配置nginx+php环境
刚看到nginx这个词,我很好奇它的读法(engine x),我的直译是"引擎x",⼀般引"擎代"表了性能,⽽"x"⼤多出现是表⽰"xtras(额外的效果)",那么整个词的意思就是类似"极致效果","额外性能"。当然这⾥不是要来唠嗑,以上是题外话。
nginx相较于我们熟悉的apache,IIS的优势,就我浅⼊浅出的了解,在于"反向代理"和"负载均衡"。因此考虑到能够为Web 服务器节省资源,它可以代替apache来提供Web服务。那么上正题了,nginx有这么多优势,那在windows下如何来配置nginx+php环境?⽹上看到还是那么多转载来转载去的⽂章。这⾥就我配置的过程,来介绍⼀下:
1、⾸先需要准备的应⽤程序包。
nginx:nginx/Windows-1.0.4
php:php-5.2.16-nts-Win32-VC6-x86.zip
RunHiddenConsole:RunHiddenConsole.zip
nginx下php是以FastCGI的⽅式运⾏,所以我们下载⾮线程安全也就是nts的php包。
2、安装与配置。
1)php的安装与配置。
直接解压下载好的php包,到D盘wnmp⽬录(D:\wnmp),这⾥把解压出来的⽂件夹重命名成php5。进⼊⽂件夹修改php.ini-recommended⽂件为php.ini,并⽤Editplus或者Notepad++打开来。到
extension_dir = "./ext"
更改为
extension_dir = "D:/wnmp/php5/ext"
往下看,再到
;extension=php_mysql.dll;extension=php_mysqli.dll
实际中,可能还要开启
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_msql.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_snmp.dll
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_xsl.dll
extension=php_zip.dll
前⾯指定了php的ext路径后,只要把需要的扩展包前⾯所对应的“;”去掉,就可以了。这⾥打开php_mysql.dll和
php_mysqli.dll,让php⽀持mysql。
当然不要忘掉很重要的⼀步就是,把php5⽬录下的libmysql.dll⽂件复制到C:\Windows⽬录下,也可以在系统变量⾥⾯指定路径,当然这⾥我选择了更为⽅便的⽅法^_^。(测试发现不复制也是可以的)
到这⾥,php已经可以⽀持mysql了。
接下来我们来配置php,让php能够与nginx结合。到
;cgi.fix_pathinfo=1
我们去掉这⾥的分号:
cgi.fix_pathinfo=1
这⼀步⾮常重要,这⾥是php的CGI的设置。
2)nginx的安装与配置
把下载好的nginx-1.0.4的包同样解压到D盘的wnmp⽬录下,并重命名为nginx。接下来,我们来配置nginx,让它能够和php协同⼯作。进⼊nginx的conf⽬录,打开nginx的配置⽂件f,到
location / {
root html; #这⾥是站点的根⽬录 index index.html
index.htm;
}
将root html;改为root D:/wnmp/www;加上index.php,即:
location / {
root D:/wnmp/www; #这⾥是站点的根⽬录
index index.php index.html index.htm;
}
这⾥需要注意,路径分隔符请使⽤/⽽不要使⽤Windows中的\以防歧义。
再往下,到
# 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 D:/wnmp/www;。再把标记为红⾊的/scripts改为$document_root,这⾥的$document_root就是指前⾯root所指的站点路径,这是改完后的:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
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;
}
设定error.log的存放⽬录,将#error_log logs/error.log;的#去处,默认error.log是存放在Nginx安装⽬录中logs⽬录下。
保存配置⽂件,就可以了。
nginx+php的环境就初步配置好了,来跑跑看。我们可以输⼊命令:
< -b 127.0.0.1:9000 -c D:/wnmp/www/php/php.ini
来启动php,并⼿动启动nginx(可能不可⾏)。当然也可以利⽤脚本来实现。
⾸先把下载好的RunHiddenConsole.zip包解压到nginx⽬录内,的作⽤是在执⾏完命令⾏脚本后可以⾃动关闭脚本,⽽从脚本中开启的进程不被关闭。然后来创建脚本,命名为start_nginx.bat,我们在Notepad++⾥来编辑它:
@echo off
mysql下载下zip如何安装REM Windows 下⽆效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最⼤请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting
RunHiddenConsole D:/phpsetup/php-5.4. -b 127.0.0.1:9000 -c D:/
phpsetup/php-5.4.45-nts-Win32-VC9-x86/php.ini echo
RunHiddenConsole D:/phpsetup/nginx-1.6. -p D:/phpsetup/nginx-1.6.0
再另外创建⼀个名为stop_nginx.bat的脚本⽤来关闭nginx:
@echo off
echo
taskkill /F / > nul
echo Stopping
taskkill /F / > nul
exit
这样,我们的服务脚本也都创建完毕了。双击start_nginx.bat,再看看进程管理器是不是有两个的进程和⼀个的进程呢?
这样nginx服务就启动了,⽽且php也以fastCGI的⽅式运⾏了。
到站点⽬录下,新建⼀个phpinfo.php的⽂件,在⾥⾯编辑
<?php
phpinfo();
>
就说明,nginx+php的环境已经配置好了,呵呵~
Nginx 403 forbidden的解决办法
常见的,引起nginx 403 forbidden有⼆种原因,⼀是缺少索引⽂件,⼆权限问题。
1、缺少index.html或者index.php⽂件
代码如下:
server {
listen 80;
server_name localhost;
index index.php index.html;
root /var/www;
}
如果在/var/www下⾯没有index.php,index.html的时候,直接访问域名,不到⽂件,会报403 forbidden。
例如:你访问st⽽这个域名,对应的root指定的索引⽂件不存在。
权限问题
对于PHP⽽⾔,如果nginx⽤户没有web⽬录的权限,则会导致该错误。
解决办法:修改web⽬录的读写权限,或者是把nginx的启动⽤户改成⽬录的所属⽤户,重起⼀下就能解决。如:
代码如下(Linux下):
chown -R nginx_user:nginx_user /htdocs
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论