zzydlqs 发表于 2012-2-17 10:13:19

windows2008+nginx1.1.12+php5.4+mysql6.0搭建高速WEB服务器(比apache快十倍)

windows2008+nginx1.1.12+php5.4+mysql6.0搭建高速WEB服务器(比apache快十倍)原来的WEB服务器是windows2008+apache2.2+php5.2+mysql6.0,打开网页比较慢,尤其是访问用户多时,比较耗资源,后来在ubuntu上建立nginx+php5.2+mysql5打开网页速度比较windows环境快多了,尤其是打开图片比较多的网页。(ubuntu搭建web服务器以后再介绍了)下面介绍windows2008+nginx1.1.12+php5.4+mysql6.0环境的建立:1、nginx1.1.12这是个绿色软件,解压后就可用了,主要是配置好就行了,配置简单。配置文件nginx.conf在nginx\conf\文件夹中。打开nginx.conf找到location / {
            root e:/web;  #你自己的网站的根目录。
            index index.php index.html index.htm;    #加上index.php
}这个配置好后,启动nginx就可以访问静态网页了。下面配置phplocation ~ \.php$ {root          e:/web;#你自己的网站的根目录fastcgi_pass   127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAMEe:/web$fastcgi_script_name;include      fastcgi_params;
}
启动nginx打开cmd.exe进入nginx目录运行nginx 或start nginx 。停止:nginx -s stop或nignx -s quit( 完全退出)现在可以测试你的网站了。2、配置PHP下载最新的PHP5.4。解压到任意目录。主要是配置php.ini。进入PHP目录,把php.ini-production改名为php.ini。在DataHandling下找到post_max_size=8M这是PHP将接受的POST数据最大大小,可更改为20M。查找定位至:; extension_dir = "./" ,将前面的分号去掉并修改为:extension_dir = "c:\php\ext"  #你自己的php目录位置查找定位至:;extension=php_gd2.dll,将前面的分号去掉为:extension=php_gd2.dll查找定位至:;extension=php_mbstring.dll,将前面的分号去掉为:extension=php_mbstring.dll查找定位至:;extension=php_mysql.dll,将前面的分号去掉为:extension=php_mysql.dll查找定位至:;extension=php_mysqli.dll,将前面的分号去掉为:extension=php_mysqli.dll查找定位至:;extension=php_pdo_mysql.dll,将前面的分号去掉为:extension=php_pdo_mysql.dll查找定位至:;cgi.force_redirect = 1,将前面的分号去掉为:cgi.force_redirect = 1查找定位至:;cgi.fix_pathinfo=1,将前面的分号去掉为:cgi.fix_pathinfo=1查找定位至:;cgi.rfc2616_headers = 0,将前面的分号去掉为:cgi.rfc2616_headers = 1复制msql.dll libmysql.dll到php目录中,php5.4没有这两个文件,如果没有这2个文件,php将不能解析mysql启动。可以从php5.2中复制,并复制到windows\system32中。下面进行测试php<?php
phpinfo();
?>
把上面代码另存test.php,放到你的网站根目录。
3、下载安装mysql6.0下载安装版,注意设置root密码。如果出现 :mysql 1045错误Access denied for user 'root'@'localhost' (using password: YES)删除mysql安装目录中的data文件夹(注意备份),用安装程序修复。1. 确认已启动mysql 2. 进入命令提示符 在bin目录下,输入: mysql -u root -p             回车 显示连接 然后在 mysql> 提示符下输入 use mysql; 等命令,详细如下: mysql> use mysql; mysql> update user set password=password('密码') where user='root';mysql> flush privileges; 复制原来的data文件夹中的文件到data中,重启mysql服务。测试你的数据库连接是否成功。代码:<?php $link = mysql_connect("localhost","root","密码"); #你的数据库密码if($link){echo "数据库连接成功!";}else{echo "数据库连接失败!";}?>在为php网页进行测试。
我的网站是discuz x2.0论坛,涉及到伪静态的问题:可以在nginx.conf中在server 的位置中加入:rewrite ^([^\.]*)/forum-(\w+)-(+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-(+)-(+)-(+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-(+)-(+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/blog-(+)-(+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^\.]*)/(fid|tid)-(+)\.html$ $1/index.php?action=$2&value=$3 last;保存后重启nginx。RewriteEngine OnRewriteBase /
# Rewrite 系统规则请勿修改rewrite ^([^\.]*)/forum-(\w+)-(+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-(+)-(+)-(+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-(+)-(+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/blog-(+)-(+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^\.]*)/(fid|tid)-(+)\.html$ $1/index.php?action=$2&value=$3 last;
if (!-e $request_filename) {
return 404;
}另存如上代码为.htaccess。复制到你网站的根目录。
重启计算机
************************************************************************************************************************************
nginx启动与phpcgi启动。php-cgi.exe在一定周期后会自动退出,所以要多开几个进程。启动php-cgi.exe需要一个小程序runhiddenconsole.exe.
1、建立一个批处理。用于启动nginx 和php-cgi.exe。
nginx.bat


cd c:\nginx
start nginx

RunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.ini为了让这个批处理在登录前就能运行,可以在组策略中进行设置。运行gpedit.msc。计算机配置-windows设置-脚本(启动/关机)--启动---添加--选择nginx.bat。2、为了防止php-cgi.exe自动退出,再建立一个批处理phpcgi.bat
cd c:\nginx

RunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.iniRunHiddenConsole.exe c:\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\php\php.ini
在“任务计划程序”中,建立一个任务,每个几个小时运行一次phpcgi.bat,来防止php-cgi.exe退出后不能打开php网页。至于每隔几个小时要看你的网站访问量了,我的是每隔6小时运行。这并不是完美解决,临时这样处理吧。现在还没有完美的解决方法。终于写完了。

   
页: [1]
查看完整版本: windows2008+nginx1.1.12+php5.4+mysql6.0搭建高速WEB服务器(比apache快十倍)