系统配置(升级前):1M带宽,512MB内存,60G磁盘。
使用伺服套件:Tengine Apache PHP MySQL
演示:
http://www.xiazijiang.com/
先看下压测效果吧:
*.在上图所示2000 并发时访问博客仍然速度如飞。但再增大压测量,阿里云就把云主机网络禁了(我可以确定除开网络、内存IO外,云主机上没有吃紧的资源运算),跪求阿里云解决。
首先执行(centos自带apache):
service httpd stop
根据
http://www.zijidelu.org/thread-47148-1-1.html的教程,先执行以下命令
wget http://down.zijidelu.org/zijidelu_install.sh; chmod 740 zijidelu_install.sh; ./zijidelu_install.sh
选择中文下载点,安装最新的套件。然后还有几个类似确认的(系统环境更新一下)
然后脚本会自动安装所需要的所有伺服套件。
安装过程大约20分钟。
安装完成过后按任意键系统将自动reboot.然后访问
http://ip:8888(下称lumanager),将登录、安全、数据库密码全部修改掉。
进入lumanager后,点击配置与优化,下面NGINX选项进去后切换成tengine.
然后将Tengine 更新到新版:
cd /root
如果没有致命错误,新版tengine应该已经覆盖掉了原先的,执行下面命令重启/重载tengine即可
wget http://tengine.taobao.org/download/tengine-1.3.0.tar.gz
tar zxvf tengine-1.3.0.tar.gz
wget http://sourceforge.net/projects/pcre/files/pcre/8.13/pcre-8.13.tar.gz/download
tar zxvf pcre-8.13.tar.gz
cd pcre-8.13
./configure --prefix=/usr/local/pcre
make && make install
cd ../tengine-1.3.0
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_sysguard_module --with-openssl=/usr/ --with-pcre=/root/pcre-8.13
make && make installservice nginx restart(重启)/reload(重载)
然后去lumanager网站管理里创建一个网站即可,注意,要选择“仅PHP由APACHE执行”,这样才能做到Tengine做前端,Apache做后端跑PHP。
(为什么不用NGINX FAST CGI?因为CGI下的PHP非常不稳定)
后面这应该是关键的了,配置网站的CACHE(注意此处贴出的配置代码仅适用于个人博客,论坛等多用户CMS慎用!!!否则容易串号,如果有耐心我可以过几天给一个用户CMS的配置教程【因为cookie前缀不同,应该没有通用的】)。
先看你系统有没有挂载tmpfs虚拟分区(我安装阿里云CENTOS 32位自带挂载)。如果没有请百度、谷歌相关教程挂载上即可。
为什么要用虚拟分区?因为读写内存的速度比读写硬盘快,对硬盘性能的影响几乎为0(不影响整台母机的DD性能)。
[root@mjj~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 49766808 5437076 41760944 12% /
tmpfs 517368 0 517368 0% /dev/shm
[root@mjj~]#
如果是上面所示,恭喜你系统已经成功挂载了tmpfs
cd /usr/local/nginx/conf
修改NGINX.CONF,在HTTP段加入以下配置
vi nginx.confproxy_cache_path /dev/shm/ngx levels=1:2 keys_zone=cache:10m inactive=600s max_size=3m;
上面的各项参数是,
/dev/shm/ngx 是缓存路径,/dev/shm/ntmp 是临时路径,keys_zone=cache:10m 是命名为cache的缓存空间,大小分配10M,inactive=600s 表示600秒内没有访问过自动清除掉,max_size=3m;是最大单个文件3M。
proxy_temp_path /dev/shm/ntmp;
按[esc]->[:]->[w]->[q]保存退出vi
然后再执行
vi vhost.conf
在server段上面(不是加在内部的上面,而是外部的上面)加入
upstream yourserverpool{ #修改成你的
然后在server{}里的location / { }
server 127.0.0.1:8889 weight=1 fail_timeout=1s; #这个按你机器的配置来定,若配置好些可以设置大点
}
里面加入
proxy_no_cache 0;
然后保存退出VI,执行
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
#忽略后端的cache控制头
proxy_ignore_headers "Cache-Control" "Expires";
#对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 200 302 304 5m; #正常响应缓存5分钟,一般来说5分钟够安全了。如果怕影响体验可以适当设置小点
proxy_cache_valid 301 1h;
proxy_cache_valid any 10s;
proxy_cache_key $host$uri$is_args$args;
proxy_cache cache ;#改成你的
proxy_pass http://yourserverpool;#改成你的service nginx reload
进入你的博客目录
cd /home/xxx
加入以下代码
#home/xxx换成你博客的路径
vi testcache.php
<?php echo date('Y-m-d H:i:s')."\r\n";
访问下
http://yourdomain.com/testcache.php看是否已经成功缓存住了。一般情况下是缓存住了的。
?><br/>To see this page will be cached(time stop) how long?<script>setTimeout('location.reload();',1000);</script>
然后再测试下访问你博客,多访问几次,看nginx的日志是不是 比apache的日志 的条目数量多?
cat /var/log.log | grep '\n' -c
如果确实要多,并且访问博客过程中,比第一次访问明显要快,那就OK,缓存住了。
#一般日志中是一行一条,这命令是返回所有的换行符
原创文章啊,转载至少给个链接呗!!~~~
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。