首页 > PHP–love > windows nginx php配置

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;
    #    }
    #}

}
  1. 小明猪 九 23rd, 2009 @ 22:01 | #1

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

  2. LAONB 九 23rd, 2009 @ 22:15 | #2

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

  3. simaopig 九 23rd, 2009 @ 22:25 | #3

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

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

  4. hslx111 九 23rd, 2009 @ 23:12 | #4

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

  5. simaopig 九 24th, 2009 @ 09:49 | #5

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

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

  6. A.shun 九 24th, 2009 @ 12:28 | #6

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

  7. Jutoy 九 24th, 2009 @ 13:43 | #7

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

  8. simaopig 九 24th, 2009 @ 13:45 | #8

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

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

  9. 风也飘泊 九 24th, 2009 @ 17:36 | #9

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

  10. simaopig 九 24th, 2009 @ 17:38 | #10

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

  11. 白银时代 九 24th, 2009 @ 17:47 | #11

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

  12. simaopig 九 24th, 2009 @ 17:48 | #12

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

  13. 荒野无灯 九 29th, 2009 @ 14:49 | #13

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

  14. simaopig 九 29th, 2009 @ 14:59 | #14

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

  15. mypcfix 十 1st, 2009 @ 18:10 | #15

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

  16. BBM 十 14th, 2009 @ 19:32 | #16

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

  17. simaopig 十 14th, 2009 @ 22:07 | #17

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

  18. Showfom 十 24th, 2009 @ 03:33 | #18

    弄了半天 来到这里了……

评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 1 )
  1. 三 5th, 2010 @ 12:00 | #1
    Pingback: windows下的nginx+php5.3+php-cgi+mysql « Setting Sun's Blog – 残阳