Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
nginx下载地址: 下载nginx for Windows 版本
php下载地址: 下载php for Windiowns版本
第 二,解压下载好的nginx压缩包(假如放到到了C:\WWW\SERVER\nginx-0.8.24),然后以Fastcgi 模式安装php C:\WWW\SERVER\php5,接下来就是nginx 配置啦,打开nginx-0.8.24下的conf文件下的nginx.conf
下面这写代码内容就是我的nginx 配置单:
server { listen 4000; //web端口号,我在本地测试用4000这个端口 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm index.php; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass [url]http://127.0.0.1;[/url] #} pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 //开启这一段,因为nginx本身不支持php,需用用FastCGI模式支持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; //修改web目录,默认为nginx下的html文件夹 include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。那么我们必须使用FastCGI方式来执行PHP程序。 可以有两种方法来实现 fastcgi,一种是直接使用 php5-cgi 来实现,另一种是利用 Lighttpd的spawn-fcgi 来实现,下面介绍如何利用 php5-cgi 单独来完成支持 php 和 cgi 安装完以后 修改 php.ini ,打开cgi.fix_pathinfo选项:cgi.fix_pathinfo=1;这样php-cgi方能正常使用SCRIPT_FILENAME这个变量。 单独运行方法:php5-cgi -b 127.0.0.1:9000 第三 启动nginx 服务器,再启动php 的cgi sever 。关于php cgi server 可以使用以下命令: php-cgi.exe -b 127.0.0.1:9000 -q C:\WWW\SERVER\php>php-cgi.exe -b 127.0.0.1:9000 -q(在CMD命令符下运行,直接打开不能启动) 这样做,缺陷是命令行窗口一直打开,若关闭那FastCGI server 也关闭啦。到网上下载RunHiddenConsole.exe 可以使命令行窗口隐藏啦。在命令行下进入到 RunHiddenConsole.exe所在目录即可执行以下命令,这样就可以关闭了命令行窗后台运行了。 RunHiddenConsole.exe C:\WWW\SERVER\php\php-cgi.exe -b 127.0.0.1:9000 -q 当然也可以自己写3个批处理文件来执行启动、停止、重启,命名3个文件为start.bat,stop.bat,restart.bat 下面是我写的三个批处理文件,仅供参考 start.bat @ECHO OFF echo Starting PHP_Fast_Cgi RunHiddenConsole.exe C:\WWW\SERVER\php\php-cgi.exe -b 127.0.0.1:9000echo Starting nginx RunHiddenConsole.exe nginx.exeEXIT stop.bat @echo off echo Stopping nginx... taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI... taskkill /F /IM C:\WWW\SERVER\php\php-cgi.exe > nul exit restart.bat @ECHO OFF call stop.bat call start.bat EXIT 最后 就是写一个简单PHPINFO 来验证PHP 是否工作正常。 三、用命令行启动或终止php-cgi和nginx进程 在Windows隐藏命令行窗口启动或终止进程运行 1、下载RunHiddenConsole:用来隐藏dos窗口 2、启动php-cgi,新建一个bat文件,如start.bat,用记事本打开,并编写如下代码: @echo off echo Starting PHP FastCGI... RunHiddenConsole.exe d:/php/php-cgi.exe -b 127.0.0.1:9000 -c d:/php/php.ini 3、终止php和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 四、 注意:start.bat和stop.bat要和RunHiddenConsole.exe放于同一个目录 如果运行start.bat系统提示缺少zlib.dll,则需要下载zlib.dll,并拷到C:/WINDOWS/system目录下 最后罗嗦一下,很多不知道如何以fastCGI模式安装php,这个你可以去百度或Google去. nginx在windows下的命令 检测conf文件 nginx -t 重载配置并重启 nginx -s reload 停止 nginx -s stop 开始 start /B nginx 关于windows下nginx和php结合 使用RunHiddenConsole的问题 目前百度到的windows下nginx和php结合 都会提到使用RunHiddenConsole来隐藏命令行窗口 其实可以不用,哥的方法是写一个php_start.vbs文件 里面内容如:createobject("wscript.shell").run "d:/php/php-cgi -b 127.0.0.1:9000",0 0的作用就是隐藏窗口 可是 在windows下的nginx 用ab测试结果并不比apache快。 不知道是什么原因,可能还是要用linux吧。
把每一件简单的事情做好,就是不简单;把每一件平凡的事情做好,就是不平凡。
浙公网安备 33010602011771号