前段时间入手了一个directspace的VPS,配置为openvz/512M/i5 760(单核)。现在把网站从godaddy搬过来了。装好系统配置完nginx,php和mysql就可以装wordpress了。网上有很多lnmp的安装包,当然你也可以自己手工安装配置。大家都知道直接全站动态的wordpress是很耗资源的,需要装其他的一些组件和插件来优化网站的运行,比如php的ZendGuardLoader,eAccelerator组件以及wordpress的cache插件,比如cos-html-cache,W3 Total Cache等,我就不介绍了。这里介绍一下配置nginx的fastcgi_cache,proxy_cache以及第三方的ngx_cache_purge模块。
首先要确定你的nginx支持cache_purge(可以用 nginx -V 命令查看,默认是不安装的)。cache_purge是很重要的,因为你不可能每次发表文章后都手动清除cache。wordpress需要的是有选择性的自动刷新,比如当网友留言时。ngx_cache_purge就能满足需求,它是一个第三方组件,需要到 https://github.com/FRiCKLE/ngx_cache_purge/ 下载安装包并重新编译,添加参数–add-module=../ngx_cache_purge-1.6 (改成你的路径)。
现在你可以参考Rahul Bansal 的文章配置fastcgi_cache了 http://rtcamp.com/tutorials/nginx-wordpress-fastcgi_cache-with-conditional-purging/ 。需要注意的是,如果你启用了rewrite,nginx.conf里的location /{ } 可能会有重复,需要你自己合并。文中代码fastcgi_pass unix:/var/run/php5-fpm.sock;需要改成你自己的配置。
然后是配置proxy_cache实现动态和静态分离了。网上有很多文章,但大部分都比较老了,比如proxy_temp_path 现在你可以把它注释掉了,这里有配置文件可以参考 http://wordpress.org/extend/plugins/nginx-proxy-cache-integrator/installation/ 。我首先尝试把静态文件放到前端用proxy cache,动态处理放到后端用fastcgi cache,这样很快,proxy cache会把后端fastcgi cache的内容也cache了。然而purge似乎比较麻烦,我本来对nginx也不熟,就想到前后端同时判断然后自动purge。但这样又会降低效率(具体结果后面再讲)。没办法,只好变成前端用fastcgi cache,后端用proxy cache了。当你的网站界面不变的时候这样也没啥大问题。
VPS用BYTE UNIX Benchmarks (Version 5.1.2)测试的得分是1020.6。有了这个参照下面讲讲用webbench测试200个连接30秒的结果: webbench -c 200 -t 30 https://www.wingwy.com/archives/2012_02_998.html
不启用fastcgi cache和proxy cache:max loadavg=8.64; speed=16510pages/minute;
开fastcgi_cache不开proxy_cache:max loadavg=0.71; speed=137566pages/minute;
同时开启proxy cache(前端)和fastcgi cache(后端)并判断刷新条件:max loadavg=0.39; speed=75838pages/minute;
同时开启proxy cache(前端)和fastcgi cache(后端)不判断刷新条件:max loadavg=0.50; speed=193084pages/minute;
同时开启proxy cache(后端)和fastcgi cache(前端)并判断刷新条件: max loadavg=0.59; speed=166790pages/minute;
以上测试均为开启eAccelerator (32M),并且这3中cache的path都是在mount的tmpfs上,如果关闭eAccelerator或者把cache path设到物理硬盘上,会使各速度降低20-30%左右。
由以上结果可以看到,fastcgi cache的效果是立杆见影的,max loadavg下降了10倍,速度上升了8倍。proxy cache(前端)和fastcgi cache(后端)组合效果最好,但需要写好判断刷新的条件,不然效率会降低60-70%(估计是我写的太烂了,而且有的肯定有错误,大家不要当真)。要么你就折中一下,把proxy cache放在后端,先处理fastcgi cache。只proxy cache而不开fastcgi cache我没有测试,但对于wordpress,从上面测试数据可以推测出他的效果应该不如fastcgi cache。
其实godaddy的空间还是不错,运行wordpress(没有做全站静态处理)日pv应该可以1w+,同时在线300+也应该没问题。就是有时候访问不了,而且邮件系统只能用它自己的,还有一些小问题。换成VPS确实折腾,很多东西都是刚接触,需要花些时间调研,而最近又很忙,没时间仔细搞,不知道各位是否觉得访问网站速度更快了。一转眼这个网站就运行6年多了,感谢各位网友的支持。由于一些原因,最初的域名wingwy.cn也没续费了,希望wingwy.com和这个网站能一直存在下去吧。
标签: fastcgi_cache, ngx_cache_purge, proxy_cache, VPS, wingwy, wordpress, 网站