编译安装LAMP之php-5.4.1三、xcache-2.0及使用ab命令实现压力测试

编译安装PHP

php有三种工做模式php

  • cgi
  • fastcgi
  • 模块

  对于Apache而言,最简单的就是模式就是模块html

 

将php安装为Apache的模块

  • 下载源码包:

 

 

  • 解决依赖关系:

请配置好yum源(能够是本地系统光盘)后执行以下命令:mysql

  # yum -y groupinstall "Desktop Platform Development" web

若是想让编译的php支持mcrypt扩展,此处还须要下载以下两个rpm包并安装之:sql

  • libmcrypt-2.5.7-5.el5.i386.rpm
  • libmcrypt-devel-2.5.7-5.el5.i386.rpm

 

  • 编译安装php-5.4.13

  注意:php的不少功能都依赖于自己系统上的某些功能的,如php能够动态生成图片,但要想生成图片要依赖于图片库。若是当前系统上没有图片库,就无法使用这个功能了。还有php-mbstring用于支持中文或者非一个字节所能表示的字符的那些语言的。数据库

 

./congfigure时指定的选项:
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

 

 

选项简介:

  --prefix:安装目录apache

  --with-mysql:指定MySQL的位置缓存

  --with-openssl:支持openssl功能的服务器

  --with-mysqli:这是MySQL的另一种让php和MySQL交互的接口,这个接口的程序是/usr/local/mysql/bin/mysql_config网络

  --with-freetype-dir:支持freetype-dir功能,freetype-dir是一个实现引用特定字体的,网页上显示不一样字体。

  --with-zlib:zlib是互联网上经常使用的压缩库,让数据文件先压缩后传送,节约带宽。

  --with-libxml-dir:众多系统实现数据交互时都基于XML实现

  --enable-sockets:让php支持套接字通讯

  --with-apxs2:实现php编译成Apache的模块

  --with-mcrypt:支持额外的加密库

  --with-config-file-path:指定php配置文件路径(主配置文件叫php.ini)

  --with-config-file-dir:它的配置文件由两段组成,如/etc/php.ini,同时还能够建立/etc/php.d/*.ini文件,即主配置下有不少片断

  --with-bz2:压缩库

  --enable-maintainer-zts:这一项是否使用取决于Apache的MPM是什么类型的,如果prefork就不须要这项,若使用event或worker就要使用这项。若php以线程方式工做就须要使用这一项,因此需先判断使用的MPM类型

 

 

  使用prefork,所以就不须要--enable-maintainer-zts此项。

  改回event:

 

  注意:在./configure过程当中,可能会出现错误,如:

    报错解决:

  1.   若不使用加密功能去除—with-mcrypt
  2.   若使用加密功能:

    安装上述四个rpm包便可,如:

  

 

 

  说明:

  1.   这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
  2.   若是使用PHP5.3以上版本,为了连接MySQL数据库,能够指定mysqlnd,这样在本机就不须要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,能够编译时绑定到它(而不用和具体的MySQL客户端库绑定造成依赖),但从PHP 5.4开始它就是默认设置了。
  # ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  php-config、phpize:php的命令行工具

 

 

    /usr/local/php/etc/:为php的其它子项目提供的配置文件存放路径

 

 

  /usr/local/php/php/man/:php手册;

 

 

  • 为php提供配置文件:

  php提供php.ini的配置模板:

  将php.ini-production复制成/etc/php.ini便可,安装完成后由于被编译成模块因此不用启动服务,是否启动服务取决于工做模型,fastcgi须要启动服务。要想让其支持fastcgi模型,只需将configure指定的配置选项—with-apxs2=改为—enable-fpm便可。

  添加php配置文件:

    复制完成便可!

  • 编辑apache配置文件httpd.conf,让Apache与php结合起来工做

  经过修改Apache的配置文件实现:

    •   添加以下二行

 

    让Apache可以处理以php结尾的页面文件便可; 

    .phps表示php源码;

    •   定位至DirectoryIndex index.html 

    配置主页面以.php结尾的页面:

  然后从新启动httpd,或让其从新载入配置文件便可测试php是否已经能够正常使用。

 

  • 测试:

  测试php链接MySQL:

 

  此外,在Apache的主配置文件最后有Include指令,Include表示把其余配置文件包含进来的意思,由此能够在/etc/httpd/extra/…(不是conf而是extra,由于是编译安装的,因此默认路径以下,extra目录下有不少配置文件)启用便可生效。

   注意若使用ssl的话光启用Include /etc/httpd/extra/httpd/httpd-ssl.conf还不够,由于没有装载ssl模块,还需找到LoadModule把模块装载的那一项启用。

 

安装xcache,为php加速

注意:可以跟php5.4结合工做的只有Xcache2.0及其之后的版本

  • 下载源码包:

  Xcache的安装比较独特,由于Xcache是php的模块。Xcache被称为php的扩展,php支持扩展功能,这种扩展说白了就是模块功能,有些扩展在编译的时候能够指定,有些能够单独安装,像Xcache。

  那么既然是php的相关扩展,就须要使用php的命令来首先让php可以加载这些扩展:

  几乎全部php的扩展在编译以前都必须对其执行phpize这个命令。

  查看帮助文档:

  执行phpize命令:

  加载扩展,而且让扩展自己可以识别php,就能够执行配置了。

  php-config:可以获取php配置信息和编译时的选项信息,那Xcache就必须根据这种功能来获取php在安装的时候到底启用了哪些功能。

查看选项信息:

  --prefix不用指定,由于Xcache会默认安装到php的扩展路径下
  --enable-xcache:启用Xcache功能
  --with-php-config:指定php-config路径,由于php-config不在默认路径下

 

 

  • 安装:

  安装结束时,会出现相似以下行:
    Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

 

  • 编辑php.ini,整合php和xcache:

  在Xcache编译安装目录下,可以找到Xcache提供的样例性的配置文件,叫xcache.ini,要想php可以支持xcache功能,意味着把Xcache的配置信息必需要提供的php里边去,因此能够把这个内容追加到php.ini中,或者直接复制这个文件到php.d目录下便可。

 

  首先将xcache提供的样例配置导入php.ini:

 

  说明:xcache.ini文件在xcache的源码目录中。

  接下来编辑/etc/php.d/xcache.ini,找到zend_extension开头的行,修改成以下行:
    zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

  注意:若是php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。

  xcache.shm_schema:使用哪一种方式使用共享内存来完成在各php进程间共享模块。
    shm:shared memory,共享内存
    mmmp:内存映射,意味着能够把一段内存让多个进程同时访问的一种机制 
  xcache_size:用于缓存opcode的代码空间大小,根据本身的须要修改,为0意味着禁用xcache功能;
  xcache.count:设置CPU个数 xcache_slots:在缓存当中有几个槽位来缓存多少个opcode的,每个槽位有多大
  xcache_ttl:过时时间,0表示永不过时,由xcache自我进行管理
  xcache.gc_interval:(gc:garbage collection,垃圾回收器)表示垃圾回收期多长时间工做一次,0表示不作任何扫描

  xcache_cacher:缓存功能是否启用
  xcache_optimizer:xcache本身的优化器是否启用(不是为php提供的优化器,而是它本身的),无需启用

 

  它的模块须要被Web加载,所以要让其生效须要重启服务器。

 

  • 测试:

 

 

启用服务器状态

  mod_status模块可让管理员查看服务器的执行状态,它经过一个HTML页面展现了当前服务器的统计数据。这些数据一般包括但不限于:

  • (1) 处于工做状态的worker进程数;
  • (2) 空闲状态的worker进程数;
  • (3) 每一个worker的状态,包括此worker已经响应的请求数,及由此worker发送的内容的字节数;
  • (4) 当前服务器总共发送的字节数;
  • (5) 服务器自上次启动或重启以来至当前的时长;
  • (6) 平均每秒钟响应的请求数、平均每秒钟发送的字节数、平均每一个请求所请求内容的字节数;

  启用状态页面的方法很简单,只须要在主配置文件中添加以下内容便可:

  <Location /server-status>
    SetHandler server-status
    Require all granted
  </Location>

  须要提醒的是,这里的状态信息不该该被全部人随意访问,所以,应该限制仅容许某些特定地址的客户端查看。好比使用Require ip 172.16.0.0/16来限制仅容许指定网段的主机查看此页面。

 

为源码编译安装的httpd配置虚拟主机:

 

 

 

 

 

 

 

 

 

 

 

 

 

须要先注释中心主机:

启用以下配置:(虚拟主机单独配置在以下文件中,还有样例)

 

  建议启用mod_log_config,所以启用,以下:

 

启用用户能够访问页面文件:

  在2.4中须要明肯定义(受权)才能访问:

 

对服务器发起压力测试以测试虚拟主机的性能

装好Apache后,自动就有一个压力测试工具:

       ab:Apache benchmark,Apache性能压力测试(评估)工具

  对咱们而言,只是简单的对本机作测试,能够测试远程主机,也能够本身测试本身,在测本身时不须要考虑网络带宽的状况,若是远程测试,还需考虑交换机、网线、网卡等各类吞吐能力;

  ab经常使用选项:

  -c #:(一次发起的请求数称为并发数)用于指定并发量(发起一次请求的请求数)

  -n #:指定一共请求多少个(请求的总数),要大于并发数(-c指定的数)

  -r:忽略错误

 

 

测试:

  注意:

  •   使用ab时必须精确到页面;
  •     此外,在Linux上有一个限定,每个进程最多只容许打开1024个文件。而ab指定的并发量,每个请求都须要打开一个套接字文件,所以有上限。若须要修改,修改方式以下:

  •   每个请求都要维持一个TCP/IP链接,并发量大时,开销极大。可能下一次请求时,上一次的请求Socket链接还未断开。

 

模拟较为真实的场景:提供1M的主页面进行测试

    在测试过程当中时,使用ps aux | grep httpd命令查看。

  须要注意的是:event模型下不是一个请求开一个进程!

  生成一个大文件测试:

 

 

测试动态内容:

  安装phpMyAdmin站点:

  提供配置文件:

  生成随机数做为密钥:

  为MySQL设置密码:

    须要注意的是,在测试时,正常来讲,应该在ab命令执行的同时手动打开测试的页面验证是否能正常打开,这样才更准确。

 

经常使用的压力测试工具:

  • ab(Web服务器自带的)
  • http_load:第三方工具,较经常使用,手动编译安装
  • webbench
  • siege

  注意:任什么时候候配置好Web服务器部署好应用程序后,都应该使用压力测试工具测试服务器性能到底如何。如此才能评估服务器上线后可否知足需求。

 

实现编译安装的Apache启用https的功能:

启用模块:

 

启用Include:

    须要创建CA,CA自签证书,客户端发起请求,利用本身的私钥生成证书签署请求,生成请求时会从私钥中提取公钥。

 

  注意:SSL一个IP地址只能创建一个主机,由于SSL会话是基于IP地址实现的。

 

其它配置文件说明:

    mpm.conf:定义每一种不一样的MPM的工做参数,在rpm包安装的方式中是由主配置文件的方式提供的,因此这一项默认应该启用起来,尤为是在编译的时候已将编译它支持多种不一样的MPM了。因此这一个应该启用起来,而且根据须要分别定义prefork、worker、event模型。

  能够把MaxRequestWorkers修改多方进行压力测试,测试时观察服务器CPU工做性能、CPU队列长度、使用vmstat观察上下文切换的次数、软中断的次数。

小测试:

相关文章
相关标签/搜索