LAMP组合的编译安装:
    httpd+php整合时有两种方式:
        1.modules: 把php编译成httpd的DSO对象;
            prefork: libphp5
            event, worker: libphp5-zts(yum安装这个即可)
            --enable-maintainer-zts (编译php时加这个选项支持event和worker模型)
        2.fpm(fastcgi):php作为独立的服务
httpd对fastcgi协议的支持:
    httpd-2.2: 需要额外安装fcgi模块;需要编译打补丁添加此模块
    httpd-2.4: 自带fcgi模块;
安装次序:
    httpd2.4, MariaDB5, php5

注意:httpd依赖于apr-1.4+, apr-util-1.4+, [apr-icon]
apr: apache portable runtime:相当于apache与系统之间的兼容层,实现让同一个httpd软件多平台运行,不用每个平台提供一种程序

    centos6默认:apr-1.3.9, apr-util-1.3.9 ------->安装httpd2.4之前需要先安装apr-1.4+,     

    apr-util-1.4+,[apr-icon],否则不兼容,但是尽量不要覆盖原先的1.3版本,会破坏其他程序

对于centos6,安装前需要先安装开发包组

yum group install " Development tools" "Server Platform Development"

与httpd相关额包需要安装:yum install pcre-devel让应用程序支持正则表达式的扩展库

1.下载用到的包:

编译安装LAMP,xcache测试_第1张图片


1.编译安装apr
# tar xf apr-1.5.0.tar.bz2
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
2.编译安装apr-util
# tar xf apr-util-1.5.3.tar.bz2
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
#3.tar xf httpd-2.4.9.tar.bz2
# cd httpd-2.4.9
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --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

解释:

    --enable-so:支持动态模块加载机制
    --enable-rewrite:只是URL重写
    --with-zlib:压缩算法库
    --with-pcre:perl扩展程序包
    --enable-mpms-shared:支持mpm共享模块机制
    --with-mpm:默认使用哪种mpm

补充:
一,构建MPM为静态模块
在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行configure脚本 时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。 此命令会列出编译到服务器程序中的所有模块,包括 MPM。
二,构建 MPM 为动态模块
在Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。 构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。


2.编辑/etc/httpd24/httpd.conf,添加如下行即可:
PidFile  "/var/run/httpd/httpd24.pid"这里应该与下面服务脚本指明的pid文件在同一位置

3.提供服务脚本:

cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24

编辑httpd24文件以下行

编译安装LAMP,xcache测试_第2张图片

这里的pid位置应该与上面httpd.conf配置文件指明的pid文件在同一位置

 chmod +x /etc/rc.d/init.d/httpd24

环境变量中导入编译安装的httpd二进制程序路径,并且记得使用hash -r清空hash缓存

vim /etc/profile.d/httpd.sh

wKioL1YTt_yRFHwNAAAbPDeaoj0566.jpg

. /etc/profile.d/httpd.sh

hash -r

开机启动:

chkconfig --add httpd24 && chkconfig httpd24 on


2.通用二进制安装mariadb:

#mkdir -pv /mydata/data   创建mariadb工作目录
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql# chown -R mysql:mysql /mydata/data
tar -xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
ln -sv mariadb-5.5.43-linux-x86_64/ mysql
cd mysql
chown -R root.mysql ./*scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql
cd /usr/local/mysql
cp support-files/my-large.cnf  /etc/mysql/my.cnf并编辑:

wKiom1YTvhvjaprJAAAtZnFGiVY438.jpg

提供服务脚本:

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

开机启动

chkconfig --add mysqld && chkconfig mysqld on

这个mysql的客户端接口程序是/usr/local/mysql/bin/mysql,可以像上面那样修改PATH变量直接调用


3.编译安装php为模块

需要两个包:yum -y install bzip2-devel libmcrypt-devel libxml2-devel,注意libmcrypt-devel在epel源中,提供加解密库

# tar xf php-5.4.40.tar.bz2
# cd php-5.4.40
# ./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
make -j 2 && make install

--with-apxs2=/usr/local/apache/bin/apxs使httpd支持模块方式加载php(把php作为apache的模块)

这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。


为php提供配置文件:
# cp php.ini-production /etc/php.ini
编辑apache配置文件httpd.conf,以apache支持php
 # vim /etc/httpd24/httpd.conf
 1、添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps
 2、定位至DirectoryIndex index.html
   修改为:
    DirectoryIndex  index.php  index.html

而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。

重启后发现php模块已经加载

wKioL1YTz5OBfyVsAACB7cinqUA052.jpg

测试代码:编译安装的httpd默认页面在/usr/local/apache/htdocs目录下,创建index.php并测试

编译安装LAMP,xcache测试_第3张图片

php正常,数据库连接正常

编译安装LAMP,xcache测试_第4张图片

4.安装php-myadmin

用unzip解压phpMyadmin

mv phpMyAdmin-4.3.5-all-languages /usr/local/apache/htdocs/pma

cp config.sample.inc.php config.inc.php  编辑:

wKiom1YT0ibC_lRAAABDrFc1oKU246.jpg

设置管理员密码:

编译安装LAMP,xcache测试_第5张图片

重读授权表:

wKiom1YT0ibBne5CAAAqfnotKdM146.jpg

登录测试:

编译安装LAMP,xcache测试_第6张图片

安装xcache:

# tar xf xcache-3.0.3.tar.gz
# cd xcache-3.0.3
# /usr/local/php/bin/phpize
# ./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-zts-20100525/

wKioL1YT2lmTICp0AABjZHDN4HA694.jpg

首先将xcache提供的样例配置导入php.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d
说明: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指令行,要确保此新增的行排在第一位。

编译安装LAMP,xcache测试_第7张图片

注意最后一个xcache_size是为opcode保存开多大缓存空间,经常需要调整

重载httpd24服务

测试页刷新后出现了xcache:

编译安装LAMP,xcache测试_第8张图片

安装xcache前压力测试:每秒处理10.73个请求

编译安装LAMP,xcache测试_第9张图片

安装xcache之后,每秒62.43

编译安装LAMP,xcache测试_第10张图片


配置apache-2.4.9以fpm方式的php-5.4.26

如果想让编译的php支持mcrypt扩展,此处还需要下载

libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-0.9.9-1.el5.centos.i386.rpm
mhash-devel-0.9.9-1.el5.centos.i386.rpm

注意这次安装避开刚刚php以模块方式安装的目录

tar xf php-5.4.26.tar.bz2
# cd php-5.4.26

# ./configure --prefix=
/usr/local/php5
 --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 
--enable-fpm --with-mcrypt  --with-config-file-path= /etc/php5 
--with-config-file-scan-dir=/etc/php5.d --with-bz2

make && make install


3、配置php-fpm
为php-fpm提供SysV init脚本,并将其添加至服务列表:
# 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

为php-fpm提供配置文件:
# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf

编译安装LAMP,xcache测试_第11张图片

编辑php-fpm的配置文件:
# vim /usr/local/php5/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php5/var/run/php-fpm.pid

wKioL1YT4j3TNx8DAABWmFk6MIo965.jpg

接下来就可以启动php-fpm了:
# service php-fpm start

默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字。
# netstat -tnlp | grep php-fpm
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      689/php-fpm

编译安装LAMP,xcache测试_第12张图片

启用httpd的相关模块
在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

wKiom1YT5NigFn5RAACgsUh_mIA580.jpg

2、配置主机支持使用fcgi
在相应的虚拟主机中添加类似如下两行。
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1

wKiom1YT5NmwUaxCAAA6tadXt-Y393.jpg

如果是虚拟主机:

http://www.lee.com/admin/index.php
/web/host1/admin/index.php
fcgi://127.0.0.1:9000/web/host1/admin/index.php
例如:

    DocumentRoot "/www/lee.com"
    ServerName lee.com
    ServerAlias www.lee.com
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/lee.com/$1
    
        Options none
        AllowOverride none
        Require all granted
    

ProxyRequests Off:关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

3、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页
 # vim /etc/httpd/httpd.conf
 1、添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps

wKioL1YT5O2zjP6OAAA0TIik7Yc426.jpg

 2、定位至DirectoryIndex index.html
   修改为:
    DirectoryIndex  index.php  index.html
补充:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。