找回密码
 注册
首页 ≡≡网络技术≡≡ 服务器 windows下的nginx 以及php_fast_cgi的配置

windows下的nginx 以及php_fast_cgi的配置

灰儿 2009-4-18 09:58:11
在用了那么久的IIS以后,最终还是决定卸了它,与线上服务器不能相同配置,这是最大的原因。另外windows下没有link,部署还真是不那么舒服。
言归正传,linux下的nginx配置很多,ubuntu下直接apt-get install 就能安装好,更方便。不过自己的机器还是常在windows下,所以在windows下再配置一个。
win32下的nginx 在这里 http://www.kevinworthington.com/nginx/win32/
安装的时候默认安装在c盘。最初还以为可以移植到别的盘去(不喜欢在c盘放东西),结果都失败。报告错误" can not open() /cygdrive/c/nginx/conf/nginx.conf " ,于是又想到用 nginx -c 来指定配置文件,结果又报告mime.types 找不到。
好一个 "/cygdrive/c/nginx" , 如果熟悉cygwin,应该一眼就知道。在搜了一圈的注册表以后,看到mingw的注册信息才想到,这是c盘 nginx目录的意思。这又是为什么?
原来nginx for windows 是在cygwin下编译的,也就是说,并不存在所谓的移植,只不过是拿过来直接编译,通过了以后打包生成的这么一个玩意,发布者默认将nginx安装到c盘下。至于cygdrive/c ,这是cygwin模拟linux下的mount方式,将windos下的盘符路进虚拟成类linux的模式。ok,这样就好办了。
首先nginx还是得老老实实的呆在c盘,不过俺的虚拟目录,呵呵,就要设置到别的地方去了。
看nginx的虚拟服务器配置:
server {
        listen       80;
        server_name localhost;
        charset utf-8;
        access_log logs/host.access.log main;
        location / {
            root   /cygdrive/e/wwwroot;   #设置e:\wwwroot 为documentroot
            index index.html index.htm;
            autoindex on; #打开目录浏览,这样当没有找到index文件,就也已浏览目录中的文件,
        }
        #error_page 404              /404.html;
        error_page   500 502 503 504 /50x.html;
        location = /50x.html {
            root   html;
        }
    }
好了,现在你的虚拟主机的documentroot已经到你指定的位置了。这里的 "/cygdrive/x" = "x:"
下面看看php fast_cgi的配置,php安装完成以后,会有php-cgi.exe 这个就是fast-cgi程序(不过之前一个5.1.4版本的没法启动,很怪异,建议更新以一下),启动命令:
php-cgi.exe -b 127.0.0.1:8080
这样,php-cgi就监听8080端口,下面配置nginx,将客户端的请求转交给fastcgi,在虚拟主机配置段加入:
        location ~ \.php$ {   #匹配所有的.php的请求
            #root   /cygdrive/e/wwwroot; # 注[1]
            fastcgi_pass   127.0.0.1:8080;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME e:\wwwroot$fastcgi_script_name;# 注[1]
            include        fastcgi_params;
        }
注[1]:这里设置documentroot必须是cygwin的格式,如果写成windows的盘符格式,会变成server root + yourpath,既"/cygdrive/c/e:\wwwroot",这显然不是你预期的结果。如果使用cygwin的格式,由于php-cgi并没有使用cygwin编译,并不能正确识别cygwin的路径格式,所以这个配置没有起作用。
注[2]:这里很关键,在前面说了documentroot的配置并不起作用,所以在这里,你必须将正确的路径告诉php fast-cgi程序。SCRIPT_FILENAME 定义被请求文件在服务器的详细路径,这个路径必须保证另一个程序也就是fast-cgi程序能够找到这个文件。在很多fast-cgi的配置中都是:$documentroot$fastcgi_script_name;上面 e:\wwwroot就充当了$documentroot的角色。 而$fastcgi_script_name会包含url中domain后面的部分
fast的其他参数,nginx给出了默认的配置,你可以适当的优化,你也可以偷懒什么都不做,不过fast-cgi已经在处理浏览器提交的php请求了。
nginx + php fast-cgi 安装注意点都写完了,启动关闭脚本也很重要,这里可以参考lighthttpd的设置。其中会提到RunHiddenConsole.exe,这个小程序在启动php -cgi的时候有用。
最后贴上启动bat脚本,将RunHiddenConsole.exe拷贝到nginx/conf下:
(bat脚本不熟悉,下面的脚本参考lighthttpd的fastcgi配置写的,能用)
-------------------------nginx-start-----------------------------
@ECHO OFF
c:\nginx\nginx.exe
ping 127.0.0.1 -n 1>NUL
echo Starting nginx
echo ....
ping 127.0.0.1 >NUL
echo Starting PHP_Fast_Cgi
RunHiddenConsole.exe php-cgi.exe -b 127.0.0.1:8080
EXIT
--------------------------nginx stop ---------------------------
@ECHO OFF
echo Stopping Nginx
process -k nginx.exe
rem process -k nginx.exe
rem process -k nginx.exe
rem process -k nginx.exe
echo Stopping PHP_Fast_Cgi
process -k php-cgi.exe >nul
EXIT
----------------------nginx restart ------------------
@ECHO OFF
call stop-nginx.bat
call start-nginx.bat
EXIT
--------------------------------------------
好了,轻快的php服务器跑起来了
您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。