之前的博文曾经有讨论过配置eAccelerator扩展来缓存PHP的步骤,这里再次讨论一下这次主题改版后ECS服务器配置的新缓存插件:xcache的配置方法。
和eAccelerator的原理相似,xcache也是一个开源的opcode缓存器/优化器,通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程,根据xcache官方提供的测试数据,采用xcache后可以使php页面的生成速率提高2~5倍(不敢奢望太多)。
xcache项目的主导开发者mOo据说是web服务器lighttpd的开发成员之一,按理应该对lighttpd的web服务器更具有亲和力,但并不妨碍在我采用的Apache服务器上配置php缓存。
一、安装准备
1、根据各自具体的php版本来采用适合的xcache版本。
截止文章发布,xcache在官网(http://xcache.lighttpd.net/)上的最新稳定版本是XCache 3.2.0,官网提供的信息显示XCache 3.2.0可以支持的php版本是php 5.1.x~5.6.x,查看PHP版本可以通过phpinfo函数或者在后台shell(cmd)输入:
php -v
2、下载xcache
博主配置的LAMP环境中,php的版本是5.5.30,这里采用稳定版的xcache 3.1.0(可以支持php 5.1.x~5.5.x),下载源码包并解压:
wget http://xcache.lighttpd.net/pub/Releases/3.1.0/xcache-3.1.0.tar.gz
tar zxvf xcache-3.1.0.tar.gz
cd xcache-3.1.0
二、编译安装:
1、老规矩,动态编译php扩展时都需要现在源码目录下用phpize来上传configure文件,关键的问题是,新手往往邯郸学步,容易按照网上copy的命令直接在本地运行,由于不同的环境下phpize的安装路径有可能不尽相同,首先需要找出phpize的安装路径:
find / -name phpize -type f
博主得到的phpize路径是/usr/bin/phpize
,接下来就在xcache的源码目录下运行phpize了:
/usr/bin/phpize
2、phpize生成configure文件以后,需要运行configure来配置编译的参数,这里需要指定两个编译参数:PHP扩展的安装目录和php-config目录位置,安装php时候采用编译安装或者yum安装有可能导致目录不确定,同样需要找出各自的安装目录。找出php-config文件用:
find / -name php-config -type f
查询到php-config的位置是/usr/bin/php-config
。由于博主在配置LAMP环境的时候是采用yum来安装php5.5的,通过rpm查询到php5.5相关的所有安装目录:
rpm -ql php55w
在运行的结果中可以看到类似/usr/lib64/httpd/modules/xxx.so
的目录,进入/usr/lib64/php/modules/
后可以看到该目录下的全部.so文件,说明/usr/lib64/php/modules/
就是存放php扩展模块的目录。
3、的到两个安装目录的位置以后,就可以执行confiure文件了:
./configure --prefix=/usr/lib64/php/modules --with-php-config=/usr/bin/php-config --enable-xcache
make
make install
4、编译完成后,可以发现目录/usr/lib64/php/modules下已经生成了xcache.so模块文件,说明编译安装成功,下一步就需要在php的主配文件php.ini中配置xcache扩展模块。
xcache官方推荐的额php.ini中xcache相关的配置是:
[xcache-common]
extension = xcache.so
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "admin"
xcache.admin.pass = "21232f297a57a5a743894a0e4a801fc3"
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 128M
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 4M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.var_namespace_mode = 0
xcache.var_namespace = ""
xcache.readonly_protection = Off
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.coredump_type = 0
xcache.disable_on_crash = Off
xcache.experimental = Off
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coverager_autostart = On
xcache.coveragedump_directory = ""
为了为xcache配置php.ini,可以直接将源码目录下的xcache.ini内容追加重定向到php.ini最后:
cat xcache.ini >> /etc/php.ini
5、导入推荐的cache配置后,还需要为php.ini指定一些个性化的配置。主要是需要指定:xcache的缓存文件位置、web后台管理员名称和管理员密码。
通常指定/tmp临时目录为缓存位置,这里需要注意的一点是xcache于eAccelerator不同,xcache通过指定的文件
(file)来缓存php,相对的,eAccelerator则是通过指定响应的缓存目录
(dir)来运行的,新手容易在这里错误地新建了缓存的目录导致php配置文件不能生效,xcache也根本没有运行起来。
在/tmp下新建缓存文件并开放权限:
touch /tmp/xcache
chmod 777 /tmp/xcache
将已配置过的php.ini中的xcache.mmap_path
选项值设置为"/tmp/xcache"
。
指定管理员名称为messikiller,将xcache.admin.user
选项值设置为"messikiller"
,不难发现配置文件中的xcache.admin.pass
选项值就是为管理设置登录密码的选项,由于这个选项的值需要时md5加密后密文字符串,假如要指定密码“123456”为管理员密码,可以在shell中用如下命令生成md5加密后的字符串:
echo -n "123456" | md5sum
将生成的字符串填入xcache.admin.pass
选项值就可以指定“123456”为管理员密码。
6、将源码包中的xcache后台web文件复制到主机web根目录下的xcache目录下,以便管理员登录访问:
mkidr /var/www/html/xcache
cp ./htdocs /var/www/html/xcache -r
7、重启apache,保证php配置生效:
service httpd restart
三、安装成功:
1、通过phpinfo查看到xcache模块已经安装并启用:
2、进入xcache的web管理后台(网站根目录下的xcache目录)可以查看到xcache详细的运行情况:
至此,在php5.5环境下配置安装xcache3.1.0就成功了。