一直想彻底的弄清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"。