apache与php(FastCGI)安装配置
什么是FastCGI:
   FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口
   FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后将结果返回给HTTP服务器。这在处理高并发访问时几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少使用了。

FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。    

源码安装httpd2.4
1,准备安装环境
-------------
apache 装在:192.168.100.7
php mysql 装在 192.168.100.9
------------------
开发包组
yum groupinstall "Development tools"
yum groupinstall "Server Platform Development"
# yum install pcre-devel -y

编译apache依赖的包

apr 和apr-util要新版的如果有就yum安装没有就源码安装
apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
源码安装
# tar -xf apr-1.5.0.tar.bz2 -C /usr/local/src/
# tar -xf apr-util-1.5.3.tar.bz2 -C /usr/local/src/
进入解压后的目录执行安装
先安装apr
# ./configure --prefix=/usr/local/apr/
# make
# make install
再安装apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install

2, 安装httpd2.4
解压
# tar -xf httpd-2.4.9.tar.bz2 -C /usr/local/src
查看帮助
./configure --help
执行./configure
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
# make && make install


3, 输出命令
# vim /etc/profile.d/httpd.sh
写入
export PATH=/usr/local/apache/bin:$PATH

4,测试启动

# apachectl start


wKiom1MwFsrDBbxsAABHkdG0aJA998.png

-----------------------
安装php
先安装mysql
# yum install mysql-server mysql php-mysql
解压php源码
# tar -xf php-5.4.19.tar.bz2 -C /usr/local/src
# cd /usr/lcoal/src/php-5.4.19
查看帮助
# ./configure --help
检查编译
# yum install bzip2-devel
# yum install libxml2-devel
检查时少了这两个devel包

# ./configure --prefix=/usr/local/php --with-mysql --with-openssl --with-mysqli --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm   --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2

--enable-fpm 启用fastcgi
在php5.3.3以前的版本fastcgi是一个单独的包为php-fpm,是作为php的补丁

make && make install

提供服务脚本
# cp /usr/local/src/php-5.4.19/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
在源码里面
# chmod a+x /etc/init.d/php-fpm
# chkconfig --add php-fpm

提供php-fpm配置文件
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑配置文件
加入
pm.max_children = 50  /*最大启动进程数*/
pm.start_servers = 5  /*启动时默认启动*/
pm.min_spare_servers = 2 /*最小空闲数*/
pm.max_spare_servers = 8 /*最大空闲数*/
pid = run/php-fpm.pid   /*pidfile*/

启动服务
service php-fpm restart

创建php的目录
mkdir /usr/local/apache/htdocs/ "和apache上的反向代理路径一样"
编辑一个主页放到刚才的目录里
vim index.php
<?
   phpinfo();
   ?>

-------------
配置apache
1,加载支持fastcgi的模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


-wKioL1MwF__hvHeAAAApIJHDJs4192.png


2,配置php首页
#
<IfModule dir_module>
   DirectoryIndex index.php index.html
</IfModule>
-
3,关闭正向代理,启用fcgi
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.100.9:9000/usr/local/apache/htdocs/$1


wKioL1MwF3_g8dCfAAAkqT3hxDI188.png


4,添加php类型
AddType application/x-httpd-php  .php
AddType application/x-httpd-php-source  .phps
-
测试php
-wKioL1MwF7SyAP0ZAABsZe3LQYc745.png

------------------
配置php连到mysql
cd /usr/local/apache/htdocs
下载 wordpress-3.3.1-zh_CN.zip
解压:
# unzip wordpress-3.3.1-zh_CN.zip
# cd wordpress
准备配置文件
# cp wp-config-sample.php wp-config.php
编辑配置文件
# vim wp-config.php
-wKiom1MwGAWRzEesAAAxIQkh22I956.png


把动态的放在本机,把静态的放到apache上
配置mysql
# mysql
mysql> create database wpdb;
mysql> grant all privileges on wpdb.* to wpuser@localhost identified by "redhat";

测试
-wKioL1MwGFHj7g3iAAB2WI0e7Aw341.png


--------------------
安装xcache,为php加速:
下载xcache-3.1.0.tar.bz2
解压:# tar -xf xcache-3.1.0.tar.bz2
# cd xcache-3.1.0
执行:# /usr/local/php/bin/phpize "php的插件都要执行这个命令"


wKiom1MwGKHRFWSmAAAZYZhYNO8135.png


编译:# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install

编译后最后一行

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
-

wKioL1MwGJ_QjukRAAAdCrF3gL4707.png


把xcache的配置文件给php
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d/
编辑/etc/php.d/xcache.ini,改下面一行
extension =  /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
查看是否成功添加
-
wKiom1MwGP7wa9pdAAAyQz71QLY459.png
测试性能:
# ab -c 10 -n 100 http://localhost/wordpress/index.php


-

wKioL1MwGO_BOtjiAACKpHmsbEI867.png


停用xcache后


wKiom1MwGTXxdiSaAACLPj8ljlE760.png

xcache加速原理

php代码执行过程:

   PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode。但是php自身并不会去缓存
这些已经经过编译后的Opcode.

   基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。由此也可以看出,这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的。