之前的博文曾经有讨论过配置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模块已经安装并启用:

xcache1

2、进入xcache的web管理后台(网站根目录下的xcache目录)可以查看到xcache详细的运行情况:

xcache2

至此,在php5.5环境下配置安装xcache3.1.0就成功了。