本文将结合上一篇文章(LNMP环境的搭建),介绍一下php的加速工具xcache的安装与使用。
php的加速工具
(一) APC Alternative PHP Cache
http://pecl.php.net/package-info.php?package=APC
APC运行于Linux和FreeBSD,你需要自己编译安装。按照其开发人员的说法,在他们的测试环境下可以提高脚本速度50%-400%。并且APC是个开源项目,已经加入了PHP的PECL库,很值得一试。
(二) Turck MMCache
http://turck-mmcache.sourceforge.net/
Turck MMCache似乎是此类软件中目前最受欢迎的一种,它开放源代码,完全免费。它将PHP代码预编译并缓存起来,同时也对PHP运行环境进行一定优化。按照其官方文档的说法,MMCache可以明显地减轻服务器的负载,并提高脚本执行速度1-10倍。
MMCache与另一个知名的加速软件Zend Optimizer兼容,但注意必需先安装MMCache(php.ini中设置)。除了加快PHP程序的速度,MMCache还可以将PHP代码加密。
Turck MMCache同时支持Linux和Win32平台。
(三) PHPA the PHP Accelerator
http://www.php-accelerator
PHPA又是另一个流行的PHP加速软件。在其官方网站上有分别使用PHPA与APC、Zend Cache的PHP脚本执行测试对比,其表现略优于APC,略逊于Zend Cache。
PHPA支持Linux, FreeBSD, OpenBSD, BSDi和Solaris系统.
(四) Zend Performance Suite
http://www.zend.com/
Zend Performance Suite是老牌的PHP加速/优化软件,依托于PHP领域最知名的Zend公司。目前已经推出4.0版本,它可以为PHP应用提供程序加速,内容缓存,文件压缩,下载服务等,功能十分强大,
获得好几个PHP杂志的推荐奖—但是不得不提起,它也很昂贵,目前的价格是1875美元。
以上几种加速软件,希望读者按照服务器环境自行测试并选择其中最适用的,因为我没有办法提供一个普遍适用的测试标准来判断哪种方案是最有效的。综合起来看,我个人认为Turck MMCache是个值得推荐的选择,免费而且功能相当出色。
(五) XCache:XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能.
他通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程,
能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高您的页面生成速率 2 到5 倍,
降低服务器负载(截取自:http://baike.baidu.com/view/1999371.htm)
结合上一篇文章, 下面详细说明一下 xcache的使用:
1.拆解压缩包
[root@redhat ~]# tar -zxvf xcache-3.0.1.tar.gz -C /usr/local/src/
2.
切换到xcache目录下:
[root@redhat ~]# cd /usr/local/src/xcache-3.0.1/
可以发现目录下并没有config文件,这个需要我们使用phpize额外生成:
Phpize在我们的/usr/local/php/bin/目录下(源码安装php):
接下来便执行如下命令:
[root@redhat xcache-3.0.1]# /usr/local/php/bin/phpize
执行完以后,我们便可以发现在xcache目录下便有了configure文件:
接下来便是我们所熟知的三步了:
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make
make install
执行完成后最后一行显示的/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525为结合后的模块路径,我们可以查看一下:
3.编辑php,整合php和xcache
[root@redhat xcache-3.0.1]# cp xcache.ini /etc/php5.d/
然后编辑 xache.ini
[root@redhat xcache-3.0.1]# vim /etc/php5.d/xcache.ini
修改第4行,加入模块具体路径:
extension =/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so {具体路径}
修改第6行,注释掉:
;; extension = php_xcache.dll(在前面加上了‘;’)
然后重启fastcgi服务:
[root@redhat xcache-3.0.1]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@redhat xcache-3.0.1]#
然后修改之前的网页测试页index.php:
[root@redhat xcache-3.0.1]# cd /usr/local/nginx/html/
[root@redhat html]# ll
总计 8
-rw-r--r-- 1 root root 383 04-24 20:54 50x.html
-rw-r--r-- 1 root root 245 04-25 14:23 index.php
[root@redhat html]# vim index.php
<?php
Phpinfo();
?>
然后刷新之前的页面,查看是否有了xcache的介绍部分:
如上图,我们的php已经成功和xcache结合。
4.xcache的管理
拷贝htdocs目录到nginx的站点目录(需要注意的是,不同的xcache版本,要拷贝的目录不一样,如果读者用的版本跟小编不一样,请读者自行查看)
[root@redhat xcache-3.0.1]# cd /usr/local/src/xcache-3.0.1/
[root@redhat xcache-3.0.1]# cp -r htdocs/ /usr/local/nginx/html/
改变目录和文件的权限
[root@redhat html]# chmod a+rx htdocs/
[root@redhat html]# cd htdocs/
[root@redhat htdocs]# ll
总计 28
drwxr-xr-x 4 root root 4096 04-25 16:27 cacher
drwxr-xr-x 3 root root 4096 04-25 16:27 common
-rw-r--r-- 1 root root 425 04-25 16:27 config.default.php
-rw-r--r-- 1 root root 1867 04-25 16:27 config.example.php
drwxr-xr-x 3 root root 4096 04-25 16:27 coverager
drwxr-xr-x 3 root root 4096 04-25 16:27 diagnosis
-rw-r--r-- 1 root root 185 04-25 16:27 index.php
[root@redhat htdocs]#
Index.php文件已经有了读取权限,所以不需要再添加了。
配置xcache.ini 输入帐号信息
切换到/etc/php5.d/目录下,
[root@redhat htdocs]# cd /etc/php5.d/
[root@redhat php5.d]# vim xcache.ini
通过第11行可以看出,密码需要MD5加密,所以用如下方法来获得MD5值(假定密码为:admin):
另开一个终端,输入如下命令:
[root@redhat ~]# echo -n "admin" |md5sum
回车之后便可以得到加密后的值:
21232f297a57a5a743894a0e4a801fc3 -
复制前面的数值部分,粘贴到刚才的文件里即可。注意不要后面的‘-’字符。
修改后的文件内容:(用户名,密码均为admin)
7
8 [xcache.admin]
9 xcache.admin.enable_auth = On
10 xcache.admin.user = "admin"
11 ; set xcache.admin.pass = md5($your_password)
12 ; login use $your_password
13 xcache.admin.pass = "21232f297a57a5a743894a0e4a801fc3"
14
然后重启我们的php-fpm服务:
[root@redhat php5.d]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@redhat php5.d]#
最后再访问即可:
输入正确的用户名,密码之后,我们便成功登陆进去了:
进入xcache的管理页面,我们便可以进行相关操作了。读者可以自行摸索。
编者的介绍就到这里了。