首页 > PHP > windows nginx php配置
2009九月23

windows nginx php配置

传说中nginx要比apache的负载均衡好的多,堪称神器。奈何,本人一直对新鲜事物不感冒。不过服务器上面有很多都是用nginx来做http服务器,今天偷闲了解一下。上网上搜了一下,大多数都是介绍linux下的nginx与php的配置。本人现在在windows下面想尝试一下,发现资料并不多,且并不是很准确。其间也遇到了很多问题,还好折腾了几次总算搞定了。下面说一下windows下面nginx和php的配置,不对的地方大家多担待。

准备资源:

原来我在用APM,很好用,集成了Apache,PHP和MySQL。这次把它关掉需要重新下载这三个文件。资源一定要准备好,不然玩不转啊。呵呵。

Nginx 下载地址:http://sysoev.ru/nginx/nginx-0.8.16.zip

PHP 下载地址:http://cn.php.net/distributions/php-5.2.11-Win32.zip

MySQL 下载地址:http://download.mysql.cn/download_file/zip/5.0/mysql-5.0.22-win32.zip

配置PHP:

把下载完的php解压到:D:\php,随便你找个地方,自己喜欢就好。备份php.ini-recommended,并将其重命名为php.ini。然后编辑php.ini。

基本上和使用apache一样,php的配置文件改动的地方并不是很多,像打开扩展文件之类的就不详谈了,有几个重点需要大家注意一下:

指定docroot——php文件的存放目录,即你的documentroot。doc_root = “e:\www”

扩展存放目录 extension_dir——更改为真实的扩展存放地址。extension_dir = “./ext”

默认时区更改——在[Date]里面增加:date.timezone = Asia/ChongQing

因为nginx需要的是cgi方式的php,所以如下几个地方是重点,否则nginx无法打开php文件

enable_dl = On
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1

如果你使用MySQL,那么和我一样拷贝php5ts.dll和libmysql.dll(开启MYSQL)至C:\WINDOWS\system32下面。并且拷贝php.ini至C:\WINDOWS目录下。

配置Nginx:

将下载下来的nginx解压到D:\nginx目录中。很明显conf目录里存放的应该是配置文件,那么还说啥?过去更改nginx.conf文件是必须的。

不看不知道,一看还真是挺开心的,这配置文件很清楚,很简单。最起码比apache要简单的多。让人看着发自内心的欣喜。具体配置如下:

打开错误日志:error_log logs/error.log;
更改线程数,因为是本地开发使用,所以线程不开太多了:worker_connections 64;
更改默认文件编码:charset gbk;

具体配置还有一些,但是不适合在这里给出,稍候我给出我的配置文件全文及截图描述。大家详细看一下即可。

启动Nginx和PHP:

启动Nginx很简单,使用nginx目录下面的nginx.exe双击即可。可是php的启动因为要使用cgi方式,所以有些特殊。我参照网上的方法下载了RunHiddenConsole.exe,使用该工具用其执行的cmd窗口会自动关闭,否则你看一个CMD窗口一直在那晃来晃去,头会晕的。

创建start_php.bat,来启动php,文件内容如下:

@echo off
echo Starting PHP FastCGI...
RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\php\php.ini

创建stop_nginx.bat,来关闭php和nginx进程,文件内容如下:

@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit

效果图:

因为我用的就是默认的80端口,所以直接访问localhost即可。下面给出两个截图。

welcome nginx

welcome nginx

nginx 目录结构

nginx 目录结构

配置文件图解:

这里的图就是随便截了一下,文字也没有标红,列位对付着看吧。自己乱写的,把没用的地方都去掉了(不是没用,是我没有更改和扩展这些配置)。

nginx conf desc

nginx conf desc

nginx配置文件:

php.ini就不给出来了,一会儿给一下下载地址得了,那玩意太长了。只放出nginx的配置文件得了,列位莫怪。

#user  nobody;
worker_processes  1;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;


events {
    worker_connections  64;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        charset gbk;

        #access_log  logs/host.access.log  main;

        location / {
            root   e:\www;
            index  index.html index.htm index.php;
        autoindex on;
        }

        #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   http://127.0.0.1;
        #}

        # 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;
        #}
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  e:\www$fastcgi_script_name;
            include        fastcgi_params;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/09/23/1485/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

22 Responses to “windows nginx php配置”

  1. #1 小明猪 回复 | 引用 Post:2009-09-23 22:01

    竟然不是用LINUX玩!? :evil:

    [回复]

  2. #2 LAONB 回复 | 引用 Post:2009-09-23 22:15

    开始我还以为你在Linux上玩呢,觉得这种你该玩的很顺手才对啊。

    [回复]

  3. #3 simaopig 回复 | 引用 Post:2009-09-23 22:25

    @小明猪
    因为我在公司的机器是WIN啊,只是上服务器上面的时候才用SSH连服务器,呵。

    @LAONB
    在家比较喜欢用LINUX。呵。

    [回复]

  4. #4 hslx111 回复 | 引用 Post:2009-09-23 23:12

    在windows上只用过xampp,其他的没有试过…

    [回复]

  5. #5 simaopig 回复 | 引用 Post:2009-09-24 09:49

    @hslx111
    呵,我最先也用xampp来着,后来有一次卸载没卸载干净就死活再装不上了。。

    于是换到了AMP,还挺好用的。呵。

    [回复]

  6. #6 A.shun 回复 | 引用 Post:2009-09-24 12:28

    看起来很强大。。
    去架一个来取代本地的xampp

    [回复]

  7. #7 Jutoy 回复 | 引用 Post:2009-09-24 13:43

    小白来路过一个……
    话说我也是只用过XAMPP,而且还在用……

    [回复]

  8. #8 simaopig 回复 | 引用 Post:2009-09-24 13:45

    @Jutoy
    呵,刚去你站找完你。给我推荐个相机吧。呵。

    @A.shun
    说是负载均衡做的很赞。不过我还没有发言权。呵。

    [回复]

  9. #9 风也飘泊 回复 | 引用 Post:2009-09-24 17:36

    我在公司用的是wamp,不过昨天坏掉了。。。今天重装了也没用

    [回复]

  10. #10 simaopig 回复 | 引用 Post:2009-09-24 17:38

    @风也飘泊
    这些都是以前我用的。想想真亲切。呵。

    [回复]

  11. #11 白银时代 回复 | 引用 Post:2009-09-24 17:47

    我一直用APM的,后来改03系统之后就自建PHP环境了。

    [回复]

  12. #12 simaopig 回复 | 引用 Post:2009-09-24 17:48

    @白银时代
    还记得自己第一次配PHP的环境,这个上火啊。。咋的也不成,后来顺利解析后很是兴奋。呵。

    [回复]

  13. #13 荒野无灯 回复 | 引用 Post:2009-09-29 14:49

    哈哈,那个google docs的是不是又用的什么插件啊?

    [回复]

  14. #14 simaopig 回复 | 引用 Post:2009-09-29 14:59

    @荒野无灯
    没有,自己在GOOGLE DOC共享就行了。呵。

    [回复]

  15. #15 mypcfix 回复 | 引用 Post:2009-10-01 18:10

    哇,竟然是在windows下配置nginx,nginx号称系最轻量级的web服务器支援软体啊

    [回复]

  16. #16 BBM 回复 | 引用 Post:2009-10-14 19:32

    试过配置二级目录吗?就是虚拟目录,我试了几回都不成功,郁闷中呢。

    [回复]

  17. #17 simaopig 回复 | 引用 Post:2009-10-14 22:07

    @BBM
    这个还真没有。。汗,明天有机会试一下吧。呵。

    [回复]

  18. #18 Showfom 回复 | 引用 Post:2009-10-24 03:33

    弄了半天 来到这里了……

    [回复]

  19. #19 mark 回复 | 引用 Post:2011-06-18 22:06

    我的环境就是php-cgi.exe 启动不了 :arrow:

    [回复]

  20. #20 ngwsx 回复 | 引用 Post:2011-07-08 11:53

    http://blog.csdn.net/ngwsx

    Ngwsx是Nginx的一个非官方的Windows移植版本,使用Windows的IOCP,支持高并发。

    特性:

    *) 支持IOCP和Select两种IO模型。

    *) 支持以Windows服务的方式运行。

    *) 支持单进程和主从进程(主进程/工作进程)两种工作模式,

    启用IOCP事件模块只支持单个工作进程,启用Select事件模块可支持多个工作进程。

    *) 使用AcceptEx和ConnectEx等WinSock扩展函数。

    *) 静态链接PCRE和ZLIB库。

    下载:

    https://github.com/downloads/hehaiqiang/ngwsx/nginx-1.0.4.0.rar

    ==========================================================

    ngx_php_module是一个nginx http模块,它把php解析器内嵌到nginx里面用来执行php脚本。

    特性:

    *) PHP解析器内嵌到Nginx,类似于Apache httpd的mod_php模块。

    下载:

    https://github.com/downloads/hehaiqiang/ngwsx/ngx_php-1.0.4.0.rar

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)