php有三种工做模式php
对于Apache而言,最简单的就是模式就是模块。html
请配置好yum源(能够是本地系统光盘)后执行以下命令:mysql
# yum -y groupinstall "Desktop Platform Development" web
若是想让编译的php支持mcrypt扩展,此处还须要下载以下两个rpm包并安装之:sql
注意: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过程当中,可能会出现错误,如:
报错解决:
安装上述四个rpm包便可,如:
说明:
# ./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.ini的配置模板:
将php.ini-production复制成/etc/php.ini便可,安装完成后由于被编译成模块因此不用启动服务,是否启动服务取决于工做模型,fastcgi须要启动服务。要想让其支持fastcgi模型,只需将configure指定的配置选项—with-apxs2=改为—enable-fpm便可。
添加php配置文件:
复制完成便可!
经过修改Apache的配置文件实现:
让Apache可以处理以php结尾的页面文件便可;
.phps表示php源码;
配置主页面以.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把模块装载的那一项启用。
注意:可以跟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/
在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页面展现了当前服务器的统计数据。这些数据一般包括但不限于:
启用状态页面的方法很简单,只须要在主配置文件中添加以下内容便可:
<Location /server-status> SetHandler server-status Require all granted </Location>
须要提醒的是,这里的状态信息不该该被全部人随意访问,所以,应该限制仅容许某些特定地址的客户端查看。好比使用Require ip 172.16.0.0/16来限制仅容许指定网段的主机查看此页面。
须要先注释中心主机:
启用以下配置:(虚拟主机单独配置在以下文件中,还有样例)
建议启用mod_log_config,所以启用,以下:
启用用户能够访问页面文件:
在2.4中须要明肯定义(受权)才能访问:
装好Apache后,自动就有一个压力测试工具:
ab:Apache benchmark,Apache性能压力测试(评估)工具
对咱们而言,只是简单的对本机作测试,能够测试远程主机,也能够本身测试本身,在测本身时不须要考虑网络带宽的状况,若是远程测试,还需考虑交换机、网线、网卡等各类吞吐能力;
ab经常使用选项:
-c #:(一次发起的请求数称为并发数)用于指定并发量(发起一次请求的请求数) -n #:指定一共请求多少个(请求的总数),要大于并发数(-c指定的数) -r:忽略错误
测试:
注意:
模拟较为真实的场景:提供1M的主页面进行测试
在测试过程当中时,使用ps aux | grep httpd命令查看。
须要注意的是:event模型下不是一个请求开一个进程!
生成一个大文件测试:
测试动态内容:
安装phpMyAdmin站点:
提供配置文件:
生成随机数做为密钥:
为MySQL设置密码:
须要注意的是,在测试时,正常来讲,应该在ab命令执行的同时手动打开测试的页面验证是否能正常打开,这样才更准确。
经常使用的压力测试工具:
注意:任什么时候候配置好Web服务器部署好应用程序后,都应该使用压力测试工具测试服务器性能到底如何。如此才能评估服务器上线后可否知足需求。
启用模块:
启用Include:
须要创建CA,CA自签证书,客户端发起请求,利用本身的私钥生成证书签署请求,生成请求时会从私钥中提取公钥。
注意:SSL一个IP地址只能创建一个主机,由于SSL会话是基于IP地址实现的。
其它配置文件说明:
mpm.conf:定义每一种不一样的MPM的工做参数,在rpm包安装的方式中是由主配置文件的方式提供的,因此这一项默认应该启用起来,尤为是在编译的时候已将编译它支持多种不一样的MPM了。因此这一个应该启用起来,而且根据须要分别定义prefork、worker、event模型。
能够把MaxRequestWorkers修改多方进行压力测试,测试时观察服务器CPU工做性能、CPU队列长度、使用vmstat观察上下文切换的次数、软中断的次数。
小测试: