下面介绍的是PHP、MeriaDB(MySQL)、编译安装AMP(httpd2.4、Meriadb、PHP)


一、PHP

1、web资源

 web资源分为动态、静态两种资源。静态资源,即原始形式与响应一致。

 CGI ------------------通用网关接口

 CGI协议是简化的http协议,可以让一个客户端,从客户端代理向网络服务器上的程序传输数据。CGI描述了客户端和服务器程序之间数据传输的标准。

 web数据请求流程:-------------httpd充当了服务器程序的反向代理

    client(http) --> httpd --> cgi --> application process --> mysql --> MySQL


2、PHP基础 --------------通用服务器端脚本编程语言

(1)、PHP

 通用服务器端脚本编程语言,专为web开发设计,将代码嵌入html文档中。PHP提供了命令行接口,可以当做一个shell来使用。

(2)、Zend Engine ---------PHP语言的解释器,为PHP提供内存和资源管理。

 Zend Engine中,【PHP代码的处理过程】为:

 PHP代码 -----> Zend opcode(二进制格式,存储于内存)--------->opcode(用Zend Engine执行)

   1)、Scanning ---------将PHP代码转换为【语言片段】

   2)、Parsing -------------将语言片段转换成【表达式】

   3)、Compilation -------------将表达式编译成Opocdes

   4)、Execution ---------------执行Opcodes(每次一条)

 opcode -----------PHP脚本编译中间语言


(3)、PHP加速器 --------------PHP opcode缓存加速器(6种)

  APC --------------不适用于PHP5.4

  eAccelerator ---------------包含了PHP loader

  Xcache ---------------快速、稳定

  Zend Optimizer -------------适用PHP5.2及以前

  Zend Guard Loader ------------适用PHP5.3

  NuSphere PhpExpress


3、PHP源代码的子目录

  build -------------------编译相关的文件

  ext ----------------扩展目录,PHP函数的定义和实现

  main -----------------PHP核心

  Zend -------------实现Zend引擎(实现语言运行环境)

  pear -----------PHP扩展与应用仓库

  sapi -----------服务器抽象层的代码

  TSRM --------------线程安全管理、*G宏

  tests ------------PHP测试脚本集合

  win32 -------------Windows实现平台


4、httpd与php的结合方式(4种):

  CGI --------------httpd主进程管理php进程;

  module ---------------将php编译为httpd的扩展模块;

  MPM -----------prefork、event

  FastCGI ---------fpm



二、MeriaDB(MySQL) -----------LAMP中的M,即MySQL(MariaDB)。

1、数据库管理基础

 DBMS -------------数据库管理系统

 RDBMS ----------数据表,行为实例,列为字段或域

 ANSI ----------数据库系列标准(SQL-86、SQL-89、SQL-99、SQL-03)

 NoSQL -------Redis、Memcached、MangoDB、Hbase(4类)


 RDBMS设计范式:(数据库的六种范式) -----------------越高的范式数据库冗余越小

 1)、第一范式(1NF)-----------对域添加规范(无重复的域)

 在第一范式中,数据库表的每一列都是不可分割的数据项,不能是集合、数组、记录等。即实体中的某个属性有多个值时,必须拆分为不同的属性。

 2)、第二范式(2NF)-------------每个实例或记录必须可以被唯一地区分

 在第二范式中,选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。第二范式,要求实体的属性完全依赖于主关键字(主键)。

 3)、第三范式(3NF)------------属性不依赖于其它非主属性

 在第三范式中,要求一个关系中不能包含已在其它关系已包含的非主关键字信息。

 4)、第四范式(4NF)

 5)、第五范式(5NF)----------称完美范式

 6)、巴德斯科范式(BCNF)、。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF


 关系型数据库管理系统:GreSQL、SyBase、DBII、InfoMIX、Oracle、MySQL、MariaDB

   CentOS 6:mysql-server-5.1

   CentOS 7:mariadb-server-5.5


2、SQL基础

(1)、MeriaDB的数据模型 --------------二维关系

 SQL --------------Structured Query Language(结构化查询语言)

 SQL接口处理的SQL语句:DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)。

    DDL -------------CREATE、ALTER、DROP

    DML -------------INSERT、DELETE、UPDATE、SELECT

    DCL -------------GRANT、REVOKE

(2)、ACID标准 -----------------MySQL存储引擎的属性(事务)

  A -------------原子性

  C -------------一致性

  I -------------隔离性

  D -------------持久性

(3)、SQL约束(4种):

  主键约束 ------------主键数据不能相同,不能为空

  外键约束 ---------------是否能引用,取决于另一张表的主键数据

  唯一键约束 ------------唯一标识记录,主键不能相同,但可以为空

  检查性约束 ------------------取决于表达式

(4)SQL关系运算(3种)

  选择 ------------挑选行

  投影 ------------挑选列

  连接 --------------多表关联操作

(5)、SQL数据抽象(3种)

  物理层 ------------决定数据的存储格式

  逻辑层 -----------数据库存储的数据、数据之间的关系

  视图层 ----------数据库中部分数据


3、mysql命令

 MySQL的配置文件生效顺序:

    /etc/mysql/my.cnf --> /etc/my.cnf --> ~/.my.cnf 

(1)、mysql命令 -----------------------交互式、命令行、客户端程序

  格式:mysql [OPTIONS] [database]

  常用选项:

  -D ------------使用哪一种数据库吗,可以不用空格进行分隔,默认为NULL

  -e 'COMMAND' -------------执行命令并退出,用引号引出命令,两种引号都可以。

  -h -----------------指定连接的MySQL数据库IP地址,也可以不用空格进行分隔,默认为localhost

  -p ---------------指定远程连接到服务器时所需的密码,默认为空,也可以不用空格分隔

  -P -------------以指定端口号来访问服务器,默认为3306,可不用空格

  -u -------------指定连接至远程MySQL服务器的用户名,默认为root

(2)、mysql账户 

  MySQL用户账户由两部分组成:'USERNAME'@'HOST'

  HOST可以使用两个通配符: %(任意长度任意字符), _(任意单个字符)

  例:'root'@'172.16.%.%'

  字符集:计算机显示的字符形状和硬盘上的映射

  

  mysql_secure_installation命令 ---------------------完成MySQL的账户安全初始化


(3)、mysql的交互式命令:客户端命令、服务器端命令

  客户端命令 --------本地命令:clear、delimiter、go、ego、quit、exit、source、status、use(可不加结束符)

      clear -----------停止发送当前键入

      delimiter -----------设置结束标记

      go --------------将前面的语句,送往服务器执行

      ego -------------将前面的语句,送往服务器执行,并将返回结果纵向显示

      exit,quit -------退出mysql程序

      status -------------获取服务器的状态信息

      use -------------选择使用指定的数据库

  

  服务器端命令 -------发送到服务器端运行再返回:DDL、DML、DCL

      注意:在执行服务器命令时,每个语句必须以指定的结束符来结尾,默认是';'。

  三个服务器命令如下:

  DDL ---------数据定义语言。主要用于管理数据库的各组件,例如:数据库、表、索引、视图、用户、存储过程、存储函数、触发器、事件等。

     常用的服务器命令:CREATE、ALTER、DROP、SHOW

  DML ---------数据操纵语言。主要用于管理表中的数据,实现数据的增、删、改、查等操作。

     常用的服务器命令:INSERT、DELETE、UPDATE、SELECT

  DCL ---------数据控制语言。主要用于管理数据的访问授权。

     常用的服务器命令:GRANT、REVOKE


  mysql> help COMMAND_KEYWORD -------------获取帮助

  MariaDB [(none)]> help COMMAND_KEYWORD


4、表管理--------------服务器端

(1)、数据库管理命令 mysql>

  create ---------创建数据库(数据库名可能区分大小写,也可能不区分,取决于文件系统)

    格式:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification]

    mysql> show character set; ---------------查看当前MySQL服务器支持的【字符集】

    mysql> show collation; -----------------查看当前MySQL服务器支持的各字符集对应的【排序规则】

  alter ----------修改数据库属性

    格式:ALTER {DATABASE | SCHEMA} [db_name] alter_specification ...

  drop -----------删除数据库

    格式:DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

(2)、表管理 mysql>

  表包括行和列:

    行,用于描述某个事物的某些属性,表中可以没有行,称为空表。

    列,用来定义或描述某个具体的属性,表中至少要有一列属性,没有列的表没有意义。


  数据类型:定义了数据类型,才能决定数据的【存储格式】,决定数据所能参与的【运算】,决定数据可以表示的【有效范围】。


  数值型数据:(2类)

    精确数值型:INT(4位)、TINYINT、SMALLINT、MEDIUMINT、BIGINT

    近似数值型:FLOAT、DOUBLE

  

  字符型数据类型:(4类)

    定长字符型:CHAR、BINARY

    变长字符型:VARCHAR、VARBINARY

    对象存储:TEXT、BLOB

    内置特殊类型:SET、ENUM

  

  日期时间型:DATE、TIME、DATETIME、TIMESTAMP、YEAR


  数据类型相关的修饰符:(2类)

    与整数有关的:UNSIGNED,无符号整数,必须紧跟精确数值型之后。

                  AUTO_INCREMENT,数值递加1。

    通用修饰符:NOT NULL、DEFAULT value


(3)、创建表

  格式:CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options]

  create table TAB_NAME-----------------创建表

  create_definition:字段、键、索引

    PRIMARY KEY ----------主键约束

    UNIQUE KEY -----------唯一键约束

    FOREIGN KEY -----------外键约束

  例:

  mysql> create table students (ID tinyint unsigned not null auto_increment primary key,Name char(30) not null,Age tinyint unsigned,Gender enum('M','F'));


(4)、删除表

  格式:DROP TABLE [IF EXISTS] tbl_name [, tbl_name] ...

  drop table TAB_NAME --------------删除一张表


(5)、修改表:修改各个字段的属性或定义。add进行添加,drop进行删除。

  格式:ALTER TABLE tbl_name [alter_specification [, alter_specification] ...]

  alter table TAB_NAME ----------修改表

  例:

  mysql> alter table students add Class varchar(50) not null; ----------添加字段

  mysql> alter table students add unique key (Age); -----------------索引字段

  mysql> alter table students drop key Age;

  mysql> alter table students modify ID tinyint unsigned not null; ---------------修改子段属性

  mysql> alter table students change Class Classes char(50) not null;

  mysql> alter table stutents add unique key (age); ------------添加唯一键


(6)、查询表

  desc ------------查询表


5、服务器端管理命令 -----------------DDL、DML、DCL

(1)DML

  1)、insert -----------添加数据。

  格式:INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} (value1,value2,...),(...),...

  注意,向表中插入的是【字符串】,需用【引号引用】,如果向表中插入的是数字,不能用引号引用。

  例:

  mysql> insert into students value (1,'little',17,23,'M'); 

  mysql> insert into students (ID,Name,Classes) values (2,'Zhang Sanfeng',"Wudang"),(3,'Zhang Wuji',"Mingjiao"); 

  mysql> select * from students; ------------查询

 

  2)、select ----------单表查询

  mysql> select * from TAB_NAME ------------查看表的所有字段

  mysql> select ID,name from students ---------------投影:只显示我们需要的列。

  mysql> select ID as stu_ID,Name as stu_Name -----------指定别名,表的内容不变

  mysql> select * from TAB_NAME where clause ------------选择

    操作符:LIKE -------------模糊匹配

            RLIKE ------------使用正则表达式对字符串进行模式匹配

            IS NULL/IS NOT NULL -------------判断指定字段是否为空

    mysql> select * from students where Age < 40;

    mysql> select * from students where Age is null;

    mysql> select * from students where Name like '%ang%';

    mysql> selcet * from students where rlike '^Z.*g$' -----------查找较慢

  mysql> select * from TAB_NAME order by age desc ---------------排序

  

  3)、update --------------修改表的数据

  mysql> update students set age=age-10 where sex is not null;

  mysql> select * from students where ID in (1,2,3,4,5); -------------据离散条件选择

  mysql> update students set age=age+5;

  mysql> update students set age=age-10 where gender is not null;

  mysql> update students set age=age-20 order by age desc limit 5;


  4)、delete -------------删除表数据。需进行限定,防止全表删除。

  mysql> delete from students where Age > 50;

  mysql> delete from students where Age <= 18;

  mysql> delete from students where age <= 18;

  mysql> delete from students order by id desc limit 5;


  5)、mysql> use mysql ------------使用表


(2)、DCL

  1)、GRANT ----------授权(查看、删除等)

  mysql> grant select ON ysu.students to 'little'@'172.16.%.%' identified by 'little';

  mysql> grant delete ON ysu.students to 'little'@'172.16.%.%' identified by 'little';

  2)、REVOKE ----------回收权限

  mysql> flush privileges;------------手动重读授权表,使授权生效


php 与 php-fpm不能共存



6、LAMP平台快速架构(httpd、php模块化通信) -------------项目

(1)、安装软件包

  CentOS 7:yum install httpd  php  php-mysql  mariadb-server

  CentOS 6:yum install httpd  php  php-mysql  mysql-server

(2)、创建虚拟主机

(3)、创建用于测试的账户 ----------------在MySQL或MariaDB中

    mysql> create database wpdb;

    mysql> grant all on wpdb.* to 'wpuser'@'172.16.%.%' identified by 'wppass';

(4)、测试php,测试php和mysql之间的通信,将以下源代码复制到以【index.php为文件名】的主页文件中。

  测试php:

 

    phpinfo();

  ?>

        

  测试mysql连接性:

 

    $conn = mysql_connect('172.16.100.71','testuser','testpass');

  if($conn)

    echo "OK";

  else

    echo "Failure";

  ?>

(5)、将某个应用复制到虚拟主机的文档根目录中,进行进一步测试。



三、编译安装AMP ----------httpd2.4、Meriadb

1、编译安装httpd2.4 

 例:编译安装httpd-2.4.27

(1)、编译安装apr

    # tar xf apr-1.5.2.tar.gz

    # cd apr-1.5.2

    # ./configure --prefix=/usr/local/apr152

    # make -j #

    # make install

(2)、编译安装apr-util

    # tar xf apr-util-1.5.4.tar.gz

    # cd apr-util-1.5.2

    # ./configure --prefix=/usr/local/apr-util154 --with-apr=/usr/local/apr152

    # make -j #

    # make install

(4)、编译安装httpd-2.4.27

    # tar xf httpd-2.4.27.tar.gz

    # cd httpd-2.4.27

    # ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib --with-apr=/usr/local/apr152 --with-apr-util=/usr/local/apr-util154

    # make -j #

    # make install

(5)、导出

  1)、导出二进制文件:--------防止二进制不兼容

    创建/etc/profile.d/httpd24.sh

    export PATH=/usr/local/apache24/bin:$PATH

  2)、导出帮助文档(可选)

    编辑/etc/man.config

    MANPATH /usr/local/apache24/man

  3) 导出头文件:

    # ln -sv /usr/local/apache24/include/ /usr/include/httpd


(6)、如果想要使用service命令来启动或关闭服务,则需要为httpd提供sysV风格的脚本,脚本内容如下:/etc/init.d/httpd

  注意:想要成功使用该脚本管理服务,要在/etc/httpd24/httpd.conf配置文件中添加以下指令:PIDFile "/var/run/httpd24.pid"

#!/bin/bash

#

# httpd        Startup script for the Apache HTTP Server

#

# chkconfig: - 85 15

# description: Apache is a World Wide Web server.  It is used to serve \

#          HTML files and CGI.

# processname: httpd

# config: /etc/httpd24/httpd.conf

# config: /etc/sysconfig/httpd24

# pidfile: /var/run/httpd24.pid


# Source function library.

. /etc/rc.d/init.d/functions


if [ -f /etc/sysconfig/httpd24 ]; then

  . /etc/sysconfig/httpd24

fi


# Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-"C"}


# This will prevent initlog from swallowing up a pass-phrase prompt if

# mod_ssl needs a pass-phrase from the user.

INITLOG_ARGS=""


# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

# with the thread-based "worker" MPM; BE WARNED that some modules may not

# work correctly with a thread-based MPM; notably PHP will refuse to start.


# Path to the apachectl script, server binary, and short-form for messages.

apachectl=/usr/local/apache24/bin/apachectl

httpd=${HTTPD-/usr/local/apache24/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd24.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd}

RETVAL=0


start() {

  echo -n $"Starting $prog: "

  LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

  RETVAL=$?

  echo

  [ $RETVAL = 0 ] && touch ${lockfile}

  return $RETVAL

}


stop() {

  echo -n $"Stopping $prog: "

  killproc -p ${pidfile} -d 10 $httpd

  RETVAL=$?

  echo

  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}

}

reload() {

  echo -n $"Reloading $prog: "

  if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

    RETVAL=$?

    echo $"not reloading due to configuration syntax error"

    failure $"not reloading $httpd due to configuration syntax error"

  else

    killproc -p ${pidfile} $httpd -HUP

    RETVAL=$?

  fi

  echo

}


# See how we were called.

case "$1" in

  start)

    start

    ;;

  stop)

    stop

    ;;

  status)

    status -p ${pidfile} $httpd

    RETVAL=$?

    ;;

  restart)

    stop

    start

    ;;

  condrestart)

    if [ -f ${pidfile} ] ; then

      stop

      start

    fi

    ;;

  reload)

    reload

    ;;

  graceful|help|configtest|fullstatus)

    $apachectl $@

    RETVAL=$?

    ;;

  *)

    echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"

    exit 1

esac


exit $RETVAL


# chmod +x /etc/rc.d/init.d/httpd

# chkconfig --add httpd

# chkconfig httpd on



2、编译安装Meriadb ---------------通用二进制格式的MariaDB包

(1)、编译安装meriadb-5.5

# tar xf mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local

# groupadd -r -g 306 msyql

# useradd -r -u 306 -g mysql mysql

# cd /usr/local

# ln -sv /usr/local/mariadb-5.5.57-linux-x86_64 mysql

# cd mysql

# chown mysql. -R .

# mkdir /mydata/data -pv

# chown mysql. /mydata/data

# cp support-files/my-large.cnf /etc/my.cnf

  添加配置条目:----------/etc/my.cnf

  innodb_file_per_table = ON

  skip_name_resolve = ON

  datadir = /mydata/data

# cp support-files/mysql.server /etc/init.d/mysqld


(2)、导出二进制文件

# vim /etc/profile.d/maria5557.sh

export PATH=/usr/local/mysql/bin:$PATH

# source /etc/profile.d/maria5557.sh


(3)、导出库文件

mysql-x86_64.conf文件移除或改名为非.conf结尾的文件名;

# vim /etc/ld.so.conf.d/mariadb5557.conf

/usr/local/mysql/lib

# ldconfig -v


(4)、导出头文件

# ln -sv /usr/local/mysql/include /usr/include/mysql


(5)、初始化数据库

# scripts/mysql_install_db --user=mysql --datadir=/mydata/data 


(6)、启动服务:

# service mysqld start

# chkconfig --add mysqld

# chkconfig mysqld on



3、编译安装php-5.6.31:

  FastCGI实现方式为:php-fpm。centos6不支持FCGI模块,centos7支持FCGI模块。

  fpm的配置文件:/etc/php-fpm.d/*.conf  /etc/php-fpm.conf

  需要依赖于:libxml2-devel, gd-devel, freetype-devel, libmcrypt-devel

(1)、安装php-5.6

  # tar xf php-5.6.31.tar.gz

  # cd php-5.6.31

  # ./configure --prefix=/usr/local/php56 --enable-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-openssl --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-libxml-dir=/usr --with-zlib --with-apxs2=/usr/local/apache24/bin/apxs --with-config-file-path=/etc/php56.ini --with-config-file-scan-dir=/etc/php56.d --with-gd --with-jpeg-dir --with-png-dir --with-mcrypt

  # make -j #

  # make install

  # cp php.ini-production /etc/php56.ini

  # mkdir /etc/php56.d

  # cp sapi/fpm/php-fpm.conf /etc/php56.d/

  # vim /etc/php56.d/php-fpm.conf

    user = nobody

    group = nobody

    listen = 127.0.0.1:9000

    listen.allowed_clients = 127.0.0.1

    pm = dynamic

    pm.max_children = 5

    pm.start_servers = 2

    pm.min_spare_servers = 1

    pm.max_spare_servers = 3

    pm.status_path = /fpm-status

    pm.max_requests = 500

    pid = /usr/local/php56/var/run/php-fpm.pid 


    php_value[session.save_handler] = files ----------------pm方式的php进程存储session的路径

    php_value[session.save_path] = /var/lib/php56/session


(2)、pm方式的php进程存储session的路径          

    # mkdir /var/lib/php56/session

    # chown nobody.nobody /var/lib/php56/session


(3)、为php-fpm提供SysV风格脚本,并将其添加至服务列表

  # cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

  # chmod +x /etc/rc.d/init.d/php-fpm

  # chkconfig --add php-fpm

  # chkconfig php-fpm on


(4)、修改/etc/rc.d/init.d/php-fpm

   1)、添加:scan_conf_dir=/etc/php56.d

   2)、修改:

    php_fpm_CONF=${exec_prefix}/php-fpm.conf 

    改为:

    php_fpm_CONF=${scan_conf_dir}/php-fpm.conf


(5)、启动服务

  # service php-fpm start



4、httpd和fastCGI兼容通信 ------------------项目

  FastCGI实现方式为:php-fpm。centos6不支持FCGI模块,centos7支持FCGI模块。

  fpm的配置文件:/etc/php-fpm.d/*.conf  /etc/php-fpm.conf


  # yum install php-fpm php-pdo php-gd php-mbstring php-mysql

  两个服务进程的配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf

  服务进程的配置文件:(global、www两段)-------------/etc/php-fpm.d/www.conf

  [global]:

  pid = /run/php-fpm/php-fpm.pid

      

  [www]: -------------/etc/php-fpm.d/www.conf配置文件中的pool的配置内容

  user = apache

  group = apache

  listen = 127.0.0.1:9000

  listen.backlog = 100

  listen.allowed_clients = 127.0.0.1

  pm = dynamic

  pm.max_children = 50

  pm.start_servers = 5

  pm.min_spare_servers = 5

  pm.max_spare_servers = 35

  pm.status_path = /fpm-status

  pm.max_requests = 500

        


5、配置httpd和php-fpm结合 ---------------------项目

(1)、httpd的配置

  DocumentRoot "/myweb/vhosts/www"

  ServerName www.qhdlink.com

  DirectoryIndex index.php

  ProxyRequests Off

  ProxyPassMatch ^/(.*\.php) fcgi://127.0.0.1:9000/myweb/vhosts/www/$1

 

    Options None

    AllowOverride None

    Require all granted

 


(2)、设置php加速访问 --------------2种安装方式

编译安装:

下载xcache的源代码 http://xcache.lighttpd.net

编译xcache:

# tar xcache-3.2.0.tar.gz

# cd xcache-3.2.0

# phpize

# ./configure --enable-xcache --with-php-config=/usr/bin/php-config

# make -j # 

# make install


EPEL安装:-----------直接使用rpm包安装,rpm包在EPEL源中

# yum install php-xcache