1 缓存加速器介绍和环境准备

1.1 操作码介绍及缓存原理

当客户端请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Operate Code;简称opcode)文件,默认情况下这个编译好的操作码文件有PHP引擎执行后丢弃;而操作码缓存的原理就是将编译后的操作码保存下来,并放到共享内存里,以便下一次调用该PHP页面时重用它,避免了相同代码的重复编译

1.2 LAMP 缓存加速器的原理

Apache服务是用libphp5.so响应处理PHP程序请求的,流程大概如下:

1Apache接收客户的PHP请求,根据规则过滤

2、传给PHP处理模块libphp5.so

3PHP引擎定位PHP文件,将其加载到内存中解析

4libphp5.so将代码编译成opcode

5libphp5.so执行opcode,然后缓存

6、当Apache接收到新的PHP程序请求,PHP引擎直接读取缓存执行opcode文件,省去了第4步操作

PHP缓存加速器解决的就是第5步的问题,会把opcode保存起来

1.3 LNMP缓存加速器原理

LAMP类似,只不过PHP引擎不再使用libphp5.so,而是启用了独立的FCGIphp-fpm

1.4 PHP缓存加速器软件选择

XCacheZendOpcache

1.5 PHP缓存加速器安装环境准备

LNMP环境准备及软件版本查看

[root@lnmp02 ~]# cat /etc/redhat-release        CentOS release 6.5 (Final) [root@lnmp02 ~]# /application/nginx/sbin/nginx -vnginx version: nginx/1.6.3 [root@lnmp02 ~]# /application/php/bin/php -vPHP 5.3.27 (cli) (built: Jun 25 2017 22:07:33)Copyright (c) 1997-2013 The PHP GroupZend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies [root@mysql-server ~]# mysqladmin -uroot -wangxian  versionGot error: Access denied for user 'root'@'localhost' (using password: NO)[root@mysql-server ~]# mysqladmin -uroot -pwangxian  versionmysqladmin  Ver 8.42 Distrib 5.5.32, for linux2.6 on x86_64Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners. Server version          5.5.32Protocol version        10Connection              Localhost via UNIX socketUNIX socket             /tmp/mysql.sockUptime:                 1 hour 49 min 49 sec Threads: 1  Questions: 742  Slow queries: 0  Opens: 219  Flush tables: 2  Open tables: 0  Queries per second avg: 0.112

解决部分加速软件的Perl编译问题

1、配置环境变量LC_ALL[root@mysql-server ~]# echo 'export LC_ALL=C'>>/etc/profile[root@mysql-server ~]# tail -1 /etc/profileexport LC_ALL=C[root@mysql-server ~]# source /etc/profile[root@mysql-server ~]# echo $LC_ALLC2、安装Perl相关软件依赖yum –y install perl-devel

2 安装PHP缓存加速器扩展

2.1 安装PHP eAccelerator缓存加速模块

eAccelerator是一个免费的开源的PHP加速、优化及缓存的扩展插件软件,可以降低PHP程序在编译解析时对服务器的性能开销

[root@lnmp02 ~]# cd /home/wangxin/tools/[root@lnmp02 tools]# ls eaccelerator-0.9.6.1.tar.bz2eaccelerator-0.9.6.1.tar.bz2[root@lnmp02 tools]# tar xf eaccelerator-0.9.6.1.tar.bz2[root@lnmp02 tools]# cd eaccelerator-0.9.6.1[root@lnmp02 eaccelerator-0.9.6.1]# /application/php/bin/phpizeConfiguring for:PHP Api Version:         20090626Zend Module Api No:      20090626Zend Extension Api No:   220090626[root@lnmp02 eaccelerator-0.9.6.1]# ./configure --enable-eaccelerator=shared --with-php-config=/application/php/bin/php-config   #configure的参数路径一定要配置正确[root@lnmp02 eaccelerator-0.9.6.1]# make[root@lnmp02 eaccelerator-0.9.6.1]# make install[root@lnmp02 eaccelerator-0.9.6.1]# echo $?0[root@lnmp02 tools]# ls /application/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so                  #最后生成这个模块表示安装成功

如果安装出现cannot find config.m4错误,需要切换到eaccelerator路径下执行/application/php/bin/phpize

2.2 安装PHP XCache缓存加速模块

XCache是一个开源的、稳定的PHP opcode缓存器/优化器

[root@lnmp02 tools]# cd /home/wangxin/tools/[root@lnmp02 tools]# wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2[root@lnmp02 tools]# ls xcache-3.2.0.tar.bz2xcache-3.2.0.tar.bz2[root@lnmp02 tools]# tar xf xcache-3.2.0.tar.bz2[root@lnmp02 tools]# cd xcache-3.2.0[root@lnmp02 xcache-3.2.0]# /application/php/bin/phpizeConfiguring for:PHP Api Version:         20090626Zend Module Api No:      20090626Zend Extension Api No:   220090626[root@lnmp02 xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/application/php/bin/php-config[root@lnmp02 xcache-3.2.0]# make[root@lnmp02 xcache-3.2.0]# make install[root@lnmp02 xcache-3.2.0]# ls -l /application/php/lib/php/extensions/no-debug-non-zts-20090626/total 1052-rwxr-xr-x 1 root root 417077 Mar 27 20:37 eaccelerator.so-rwxr-xr-x 1 root root 658484 Mar 27 20:51 xcache.so   #最后生成此模块表示安装成功

2.3 PHP官方加速插件ZendOpcache

[root@lnmp02 xcache-3.2.0]# cd /home/wangxin/tools/[root@lnmp02 tools]# wget http://pecl.php.net/get/zendopcache-7.0.5.tgz[root@lnmp02 tools]# tar xf zendopcache-7.0.5.tgz[root@lnmp02 tools]# cd zendopcache-7.0.5[root@lnmp02 zendopcache-7.0.5]# /application/php/bin/phpizeConfiguring for:PHP Api Version:         20090626Zend Module Api No:      20090626Zend Extension Api No:   220090626[root@lnmp02 zendopcache-7.0.5]# ./configure --enable-opcache --with-php-config=/application/php/bin/php-config[root@lnmp02 zendopcache-7.0.5]# make[root@lnmp02 zendopcache-7.0.5]# make installInstalling shared extensions:     /application/php-5.3.27/lib/php/extensions/no-debug-non-zts-20090626/[root@lnmp02 zendopcache-7.0.5]# ls -l /application/php/lib/php/extensions/no-debug-non-zts-20090626/total 1536-rwxr-xr-x 1 root root 417077 Mar 27 20:37 eaccelerator.so-rwxr-xr-x 1 root root 491830 Mar 27 21:03 opcache.so    #生成此模块,表示安装成功-rwxr-xr-x 1 root root 658484 Mar 27 20:51 xcache.so

3 安装数据库缓存及其他PHP扩展插件

3.1 安装PHP Memcached扩展插件

Memcached介绍

Memcached是一个开源的、支持高性能、高并发及分布式的内存缓存服务软件,最后的字符d,是daemon的意思,表示服务器端进程模式服务

LNMPmemcached客户端缓存工作原理图

memcached服务的工作流程:

1、程序首先检查客户端请求的数据在memcached服务的缓存中是否存在,如果在,直接把请求数据返回

2、若不在,则程序会去memcached后端的数据库服务

3、把从数据库中取到的数据返回给客户端

4、同时把新取到的数据缓存一份到memcached服务缓存中。

memcached缓存php扩展插件安装

[

root@lnmp02 zendopcache-7.0.5]# cd /home/wangxin/tools/[root@lnmp02 tools]# wget -q http://pecl.php.net/get/memcache-2.2.7.tgz[root@lnmp02 tools]# tar xf memcache-2.2.7.tgz[root@lnmp02 tools]# cd memcache-2.2.7[root@lnmp02 memcache-2.2.7]# /application/php/bin/phpize    Configuring for:PHP Api Version:         20090626Zend Module Api No:      20090626Zend Extension Api No:   220090626[root@lnmp02 memcache-2.2.7]# ./configure  --enable-memcache --with-php-config=/application/php/bin/php-config[root@lnmp02 memcache-2.2.7]# make && make install[root@lnmp02 memcache-2.2.7]# ls -l /application/php-5.3.27/lib/php/extensions/no-debug-non-zts-20090626/total 1780-rwxr-xr-x 1 root root 417077 Mar 27 20:37 eaccelerator.so-rwxr-xr-x 1 root root 246744 Mar 31 21:06 memcache.so     #安装成功-rwxr-xr-x 1 root root 491830 Mar 27 21:03 opcache.so-rwxr-xr-x 1 root root 658484 Mar 27 20:51 xcache.so

3.2 安装PDO_MYSQL扩展插件模块

PDO扩展为PHP访问数据库定义了一个轻量级一致性接口,它提供了一个数据访问抽象层,无论使用的是什么数据库,都可以通过一致的函数查询并获取数据

[root@lnmp02 ~]# cd /home/wangxin/tools/[root@lnmp02 tools]# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz[root@lnmp02 tools]# tar xf PDO_MYSQL-1.0.2.tgz[root@lnmp02 tools]# cd PDO_MYSQL-1.0.2[root@lnmp02 PDO_MYSQL-1.0.2]# /application/php/bin/phpize[root@lnmp02 PDO_MYSQL-1.0.2]# ./configure --with-php-config=/application/php/bin/php-config --with-pdo-mysql=/application/mysql    #mysql的安装路径要正确[root@lnmp02 PDO_MYSQL-1.0.2]# make && make install[root@lnmp02 PDO_MYSQL-1.0.2]# ls -l /application/php/lib/php/extensions/no-debug-non-zts-20090626/total 1936-rwxr-xr-x 1 root root 417077 Mar 27 20:37 eaccelerator.so-rwxr-xr-x 1 root root 246744 Mar 31 21:06 memcache.so-rwxr-xr-x 1 root root 491830 Mar 27 21:03 opcache.so-rwxr-xr-x 1 root root 156012 Mar 31 23:20 pdo_mysql.so  《==安装成功-rwxr-xr-x 1 root root 658484 Mar 27 20:51 xcache.so

4 安装图像处理程序及imagick扩展模块

安装ImageMagick图像软件

ImageMagick是一套功能强大、稳定、免费的工具集,能处理多种格式的图片文件,常见功能:

对图片进行格式转换;

改变图片尺寸、设置图片特效;

对图片设置各种尺寸的略缩图;

将图片做成gif,组合图片,加边框,取得一些图片特性信息等等

 

安装过程

cd /home/wangxin/tools/lsrz -yls -l ImageMagick-6.7.9-9.tar.xztar xf ImageMagick-6.7.9-9.tar.xzcd ImageMagick-6.7.9-9./configuremake && make install

 

安装imagick PHP扩展插件

imagick插件工作需要ImageMagick软件的支持,所以必须先装ImageMagick

安装过程:

[root@lnmp02 ImageMagick-6.7.9-9]# cd /home/wangxin/tools/[root@lnmp02 tools]# wget http://pecl.php.net/get/imagick-2.3.0.tgz[root@lnmp02 tools]# tar xf imagick-2.3.0.tgz[root@lnmp02 tools]# cd imagick-2.3.0[root@lnmp02 imagick-2.3.0]# /application/php/bin/phpize[root@lnmp02 imagick-2.3.0]# ./configure --with-php-config=/application/php/bin/php-config[root@lnmp02 imagick-2.3.0]# make && make install[root@lnmp02 imagick-2.3.0]# ls -l /application/php/lib/php/extensions/no-debug-non-zts-20090626/total 2984-rwxr-xr-x 1 root root  417077 Mar 27 20:37 eaccelerator.so-rwxr-xr-x 1 root root 1073049 Apr  1 00:08 imagick.so-rwxr-xr-x 1 root root  246744 Mar 31 21:06 memcache.so-rwxr-xr-x 1 root root  491830 Mar 27 21:03 opcache.so-rwxr-xr-x 1 root root  156012 Mar 31 23:20 pdo_mysql.so-rwxr-xr-x 1 root root  658484 Mar 27 20:51 xcache.so

6个扩展模块全部安装完毕,eaccelerator.soopcache.soxcache.so是同类软件,生产环境安装一种即可,否则可能会引起冲突;memcache.so是数据库缓存软件;

pdo_mysql.soimagick.so是功能软件;可选择安装。

5 配置memcache/PDO_MYSQL/imagick模块

修改PHP的配置文件

[root@lnmp02 imagick-2.3.0]# cd /application/php/lib/[root@lnmp02 lib]# lsphp  php.ini[root@lnmp02 lib]# cat php.ini |grep extension_dir; extension_dir = "./"

备份

[root@lnmp02 lib]# /bin/cp php.ini php.ini.bak_0401   [root@lnmp02 lib]# lsphp  php.ini  php.ini.bak_0401

修改路径

[root@lnmp02 lib]# sed -i 's#extension_dir = "./"#extension_dir = "/application/php-5.3.27/lib/php/extensions/no-debug-non-zts-20090626/"#g' php.ini                         [root@lnmp02 lib]# grep "extension_dir =" php.ini; extension_dir = "/application/php-5.3.27/lib/php/extensions/no-debug-non-zts-20090626/"; extension_dir = "ext";sqlite3.extension_dir =

增加模块的参数

[root@lnmp02 lib]# vim /application/php/lib/php.ini;----cache ext start by wangxian 20180401extension = memcache.soextension = pdo_mysql.soextension = imagick.so;----cache ext end by wangxian 20180401; End:

重启PHP服务,并检查测试

重启PHP

[root@lnmp02 lib]# pkill php-fpm[root@lnmp02 lib]# ps -ef|grep php-fpm|grep -v grep[root@lnmp02 lib]# /application/php/sbin/php-fpm[root@lnmp02 lib]# ps -ef|grep php-fpm|grep -v grep|wc -l3

编写测试文件,增加PHP首页文件

[root@lnmp02 lib]# cd /application/nginx/conf/extra/[root@lnmp02 extra]# lsbbs.conf  blog.conf  status.conf  www.conf[root@lnmp02 extra]# cat blog.conf     server {        listen       80;        server_name  blog.etiantian123.org;        location / {            root   html/blog;            index  index.php index.html index.htm;   《===增加index.php        }        location ~ .*\.(php|php5)?$ {            root html/blog;            fastcgi_pass  127.0.0.1:9000;            fastcgi_index index.php;            include fastcgi.conf;        }    }[root@lnmp02 blog]# cat test_info.php

浏览器测试

Ctrl+F搜索pdo_mysql imagick memcache查看3个模块是否生效

配置完毕

6 配置Xcache插件加速(eacceleratorZendopcache略)

修改php.ini配置Xcache

[root@lnmp02 ~]# cd /application/php/lib/[root@lnmp02 lib]# lsphp  php.ini  php.ini.bak_0401[root@lnmp02 lib]# echo  >>php.ini[root@lnmp02 lib]# echo ';xcache config by wangxian----------------' >>php.ini[root@lnmp02 lib]# tail -2 php.ini ;xcache config by wangxian----------------

修改Xcache参数

[root@lnmp02 xcache-3.2.0]# vim /home/wangxin/tools/xcache-3.2.0/xcache.inixcache.size  =               60M     修改为256Mxcache.count =                 1              2xcache.ttl   =                 0             86400xcache.gc_interval =            0              3600xcache.var_size  =            4M             64M

 

将修改后的xcache.ini合并到php.ini结尾

[root@lnmp02 lib]#  cat /home/wangxin/tools/xcache-3.2.0/xcache.ini >> php.ini

检查

[root@lnmp02 lib]# tail -85 php.ini |egrep -v "^;|^$"[xcache-common]extension = xcache.so[xcache.admin]xcache.admin.enable_auth = Onxcache.admin.user = "mOo"xcache.admin.pass = "md5 encrypted password"[xcache]xcache.shm_scheme =        "mmap"xcache.size  =               256Mxcache.count =                 2xcache.slots =                8Kxcache.ttl   =                 86400xcache.gc_interval =           3600xcache.var_size  =            64Mxcache.var_count =             1xcache.var_slots =            8Kxcache.var_ttl   =             0xcache.var_maxttl   =          0xcache.var_gc_interval =     300xcache.var_namespace_mode =    0xcache.var_namespace =        ""xcache.readonly_protection = Offxcache.mmap_path =    "/dev/zero"xcache.coredump_directory =   ""xcache.coredump_type =         0xcache.disable_on_crash =    Offxcache.experimental =        Offxcache.cacher =               Onxcache.stat   =               Onxcache.optimizer =           Off[xcache.coverager]xcache.coverager =           Offxcache.coverager_autostart =  Onxcache.coveragedump_directory = ""

检查Xcache加速情况配置

[root@lnmp02 lib]# /application/php/bin/php -vPHP 5.3.27 (cli) (built: Jun 25 2017 22:07:33)Copyright (c) 1997-2013 The PHP GroupZend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies    with XCache v3.2.0, Copyright (c) 2005-2014, by mOo    with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo

XcacheeAccelerator都使用系统的共享内存作为存储空间,因此有必要调整系统的共享内存大小参数,调整如下:

[root@lnmp02 lib]# tail /etc/sysctl.conf  kernel.msgmnb = 65536 # Controls the maximum size of a message, in byteskernel.msgmax = 65536 # Controls the maximum shared segment size, in byteskernel.shmmax = 68719476736 # Controls the maximum number of shared memory segments, in pageskernel.shmall = 4294967296

重启PHP服务,通过phpinfo检查Xcache插件结果

[root@lnmp02 lib]# pkill php-fpm[root@lnmp02 lib]# ps -ef|grep php-fpm|grep -v grep[root@lnmp02 lib]# /application/php/sbin/php-fpm[root@lnmp02 lib]# ps -ef|grep php-fpm|grep -v grep|wc -l3

打开搜索Xcache查看

配置web界面查看Xcache缓存加速信息

配置帐号密码

[root@lnmp02 lib]# echo -n "123456"|md5sume10adc3949ba59abbe56e057f20f883e  -[root@lnmp02 lib]# vim php.inixcache.admin.user = "wangxian"xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e"

复制XCache软件下面的缓存加速管理PHP程序到站点目录下

[root@lnmp02 lib]# cd /home/wangxin/tools/xcache-3.2.0[root@lnmp02 xcache-3.2.0]# cp -a htdocs/ /application/nginx/html/blog/xadmin[root@lnmp02 xcache-3.2.0]# chown -R nginx.nginx  /application/nginx/html/blog/xadmin            [root@lnmp02 xcache-3.2.0]# pkill php-fpm[root@lnmp02 xcache-3.2.0]# /application/php/sbin/php-fpm

Web访问输入帐号密码登录查看相关信息

7 phpize是什么

是用来扩展PHP扩展模块的,通过phpize可以建立PHP的外挂模块。比如想在原来编译好的PHP中加入memcached等扩展模块,可以使用phpize工具