一直想彻底的弄清Nginx的结构、功能和配置,所以开始全面的去了解Nginx,首先到官网http://wiki.nginx.org/,跟着官网的说明一步一步的去了解。下载windows版本的nginx-1.2.3.zip,我在E盘建了个server文件夹然后解压nginx,解压出来的是nginx-1.2.3所以重命名为nginx,此时nginx的目录为E:/server/nginx

一、启动nginx

  打开dos窗口(点击运行输入cmd),然后进入nginx的目录命令为:

E:

  cd server/nginx

  start nginx       //不要弄成start nginx.exe

-s [ stop | quit | reopen | reload ]

  在浏览器地址栏输入localhost回车,看到welcome to nginx就表示成功了。接下来我们就开始安装php了(nginx下php是以FastCGI的方式运行,所以我们下载非线程安全也就是nts的php包)我下载的版本是5.2.17把它解压到E:/server/php目录下,同时还需用到RunHiddenConsole:RunHiddenConsole.zip,进入php目录下把php.ini-recommended文件复制一份改名为php.ini然后用文本编辑器编辑它

extension_dir = "./"    改为  extension_dir = "e:/server/php/ext"   再往下找到模块,开启以下这些模块
extension=php_gd2.dll
extension=php_curl.dll
extension=php_mbstring.dll  
extension=php_exif.dll              //获取jpeg(其他格式不行)图片拍摄工具的参数 它需要mbstring模块 所以要在它之后加载
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo.dll             //pdo函数库
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll

让php能够与nginx结合。找到   ;cgi.fix_pathinfo=1  改为 cgi.fix_pathinfo=1

location / {
    root   html;      #这里是站点的根目录
    index  index.html index.htm;
}

将root  html;改为root   e:/server/www;

再往下,找到

# 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   e:/server/www;。再把标记为红色的/scripts改为“$document_root”,这里的“$document_root”就是指前面“root”所指的站点路径,这是改完后的:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    root           e:/server/www;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

保存配置文件,就可以了。启动php则需在dos窗口下进入php的目录后输入命令:php-cgi.ext  -b  127.0.0.1:9000  -c  e:/server/php/php.ini 就可以了

手动启动先要启动php然后启动nginx,不过比较麻烦,这时可以用脚本来启动php和nginx 。首先把下载好的RunHiddenConsole.zip包解压到server目录内,RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。然后来创建脚本,start.bat

@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=100
 
echo Starting PHP FastCGI...
RunHiddenConsole e:/server/php/php-cgi.exe -b 127.0.0.1:9000 -c e:/server/php/php.ini
 
echo Starting nginx...
RunHiddenConsole e:/server/nginx/nginx.exe -p e:/server/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后在任务管理器里会有两个nginx.exe的进程和一个php-cgi.exe的进程,在e/server/www目录下建一个index.php写入phpinfo函数保存之后在浏览器里输入localhost如果看到phpinfo的信息就说明成功了。

如果出现It is not safe to rely on the system’s timezone settings的问题,php.ini里加上date.timezone = "Asia/Shanghai"。