httpd 2.4新特性:
1、MPM可于运行时装载;
2、Event MPM
3、异步读写
4、在每模块及每目录上指定日志级别;
5、每请求配置;<If>, <ElseIf>, <Else>;
6、增强的表达式分析器;
7、毫秒级的KeepAlive Timeout;
8、基于域名的虚拟主机不再需要NameVirtualHost指令;
9、降低了内存占用;
10、支持在配置文件中使用自定义变量;

新增加的模块:
mod_proxy_fcgi(可以提供fcgi代理)
mod_proxy_scgi(支持scgi协议)
mod_proxy_express
mod_remoteip(能够强大的匹配客户端的IP地址)
mod_session(保持用户会话)
mod_ratelimit(限制每个用户的带宽)
mod_request(请求模块,对请求做强大的过滤)
等等;

httpd 2.4.3 + mysql-5.5.28 + php-5.4.8编译安装过程:
先配置安装环境,这个要安装三个包组,因为php有时候需要图形开发库,所以就安装 "X Softwar Development"这个库安装的环境用yum -y groupinstall "Development Libraries" "Development Tools" "X Softwar Development"

一、编译安装apache
补充:
apr:apache portable run-time是apache运行时环境,为了能使apache运行在不同的平台上
并且能使用同样的机制,所以apr能够抹除不同系统的数据库,让apache运行环境的机制都一样,
并且能让apache的某些特性跨平台的使用。

1、解决依赖关系
httpd-2.4.3需要较新版本的apr和apr-util,因此需要事先对其进行升级。
升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。
这里选择使用编译源代码的方式进行,使用编译源代码的方式能把安装的软件放到一个特定的地方方便以后的修改升级删除,并且不影响其他的使用。
apr和apr-util这个两个是有先后安装顺序的,应先安装apr这个包,在安装apr-util这个包,因为apr-util是依赖apr的

(1) httpd-2.4.2编译过程也要依赖于pcre-devel软件包,需要事先安装。
用命令yum -y install pcre-devel

(2) 编译安装apr
先下载apr这个包,然后解压这个包
 tar xf apr-1.4.6.tar.bz2
进入这个apr-1.4.6中
 cd apr-1.4.6
 ./configure --prefix=/usr/local/apr
  make && make install
补充:
安装apr的第一步,--prefix是用于指定安装路径,为了以后卸载方便和不跟rpm包安装的发生冲突。

(3) 编译安装apr-util
 tar xf apr-util-1.4.1.tar.bz2
 cd apr-util-1.4.1
 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  make && make install
补充:
安装apr-util的第一步,--prefix是用于指定安装路径,--with-apr是指定apr的安装路径。
2、编译安装httpd-2.4.3

首先下载httpd-2.4.3到本地。
先用rpm -q httpd查看一下自己安装过http的没有,然后看看netstat -tnlp查看一下80接口是否被占用。
然后看看上面的apr和apr-util安装好了没,安装好后在安装httpd。
这样做是为了不出现错误的。
而后执行如下命令进行编译安装过程:
tar xf httpd-2.4.3.tar.bz2
 cd httpd-2.4.3
 ./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-mpms-shared=all --with-mpm=event -with-mpm=prefork
 make && make install
补充:
安装第一步,--prefix是指定安装的路径,--sysconfdir是配置文件的安装路径,--enable-so是支持模块方式,让apache支持共享模块
--enable-cgi是支持cgi的功能,--enable-rewrite是支持url重写的,--with-zlib是支持zlib库
在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行configure脚本 时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。 此命令会列出编译到服务器程序中的所有模块,包括 MPM。
在Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。 构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。

3、使用httpd的默认机制手动启动一下,因为路径不在默认的路径中,为了是命令能够命令行中直接使用
不使用绝对路径所有我们编辑这个文件:vim /etc/profile.d/httpd.sh添加如下内容
PATH=$PATH:/usr/local/apache/bin
export PATH
保存退出,然后重新登录一下。
然后用命令apachectl start查看一下是否启动。
能启动后用命令netstat -tnlp查看一下80接口启动没。
然后打开浏览器中,输入172.16.100.1出下的页面的内容是 It  Works!

现在用服务脚本来启动apache,先关掉apache服务,用ps aux | grep httpd
现在提供服务脚本:vim /etc/rc.d/init.d/httpd
4、修改httpd的主配置文件,设置其Pid文件的路径,编辑/etc/httpd/httpd.conf,添加如下行即可

编译安装apache+mysql+php_编译安装apache

服务脚本/etc/rc.d/init.d/httpd,内容如下:

编译安装apache+mysql+php_编译安装apache_02

编译安装apache+mysql+php_编译安装apache_03

 

 

 

 

编译安装apache+mysql+php_编译安装php_04

而后为此脚本赋予执行权限:
chmod +x /etc/rc.d/init.d/httpd
加入服务列表:
 chkconfig --add httpd
然后用chkconfig --list httpd查看一下是否默认启动
启动用chkconfig httpd on
用service httpd start启动服务
用netstat -tnlp 查看一下80窗口是否启动

编译安装apache+mysql+php_编译安装apache_05

这样就安装好了

现在来实现使用基于名称的虚拟主机。
编辑配置文件vim /etc/httpd/httpd.conf
为了能使用虚拟主机,不在配置文件后面直接添加,所有启动这个文件能够独立配置虚拟主机配置文件
为了使用虚拟主机,所以注释主机文件编译安装apache+mysql+php_编译安装apache_06

编译安装apache+mysql+php_编译安装apache_07

cd/etc/httpd/extra
编辑这个文件vim httpd-vhosts.conf内容如下编译安装apache+mysql+php_编译安装php_08

创建两个目录是:mkdir /web/{magedu,pma}
然后编辑一个页面 vim /web/magedu/index.html添加内容是:
magedu
然后保存退出
然后编辑一个页面 vim /web/pma/index.html添加内容是:
pma magedu
然后保存退出
然后重启一下:service httpd restart
用httpd -t 检查一下语法
然后编译下你的host文件让你的电脑能解析这个两个域名
172.16.100.1 www.magedu.com
172.16.100.1 pma.magedu.com
然后保存退出
然后输入命令getenforce查看一下
然后测试一下

二、安装mysql-5.5.28

1、准备数据存放的文件系统

新建一个逻辑卷,并将其挂载至特定目录即可。
这里假设其逻辑卷的挂载目录为/data,而后需要创建/data/mydata目录做为mysql数据的存放目录,
并且让文件的属主属组都是mysql所以输入命令:chown -R mysql:mysql /mydata/data编译安装apache+mysql+php_编译安装php_09编译安装apache+mysql+php_编译安装mysql_10编译安装apache+mysql+php_编译安装mysql_11

2、安装并初始化mysql-5.5.28

首先下载平台对应的mysql版本至本地,这里是32位平台,因此,选择的为mysql-5.5.28-linux2.6-i686.tar.gz。
tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local
cd /usr/local/
ln -sv mysql-5.5.28-linux2.6-i686  mysql
要想运行mysql要用用户以安全方式运行进程,所以新建用户:
 groupadd -r mysql(先添加组)
 useradd -r -g mysql  mysql
 cd mysql
配置mysql服务器启动,步骤如下:
让当前目录的文件都是以mysql为属主属组,命令如下:
 chown -R mysql:mysql  .
为mysq提供配置文件,初始化mysql,命令如下:
 scripts/mysql_install_db --user=mysql --datadir=/mydata/data
 补充:
 --datadir指定目录,为了是初始化的数据全部存放到指定数据目录中
 --user是指定初始化的用户

4、为mysql提供主配置文件:
 cd /support-files
 这个文件中提供了很多样本的配置文件,用ls查看一下就知道了。
 复制support-files/my-large.cnf这个文件为 /etc/my.cnf,命令如下:
 cp support-files/my-large.cnf  /etc/my.cnf
因为/etc/my.cnf这个有些地方不适合我们,因此我们需要修改一下,vim /etc/my.cnf修改内容如下:
并修改此文件中thread_concurrency的值为你的CPU个数乘以2,另外还需要添加如下行指定mysql数据文件的存放位置:编译安装apache+mysql+php_编译安装php_12

保存退出然后为mysql提供脚本,并且添加至服务列表,命令如下:编译安装apache+mysql+php_编译安装apache_13

然后切入到/usr/local/mysql这目录中,把这里的文件的属主修改为root,命令为:
chown -R root  .
而后就可以启动服务测试使用了。启动用service mysql start,然后用netstat -tnlp查看一下3306这个接口是否启动
为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:

为了让命令行直接使用我们要编辑这个文件:vim /etc/profile.d/mysql.sh添加如下内容:
PATH=$PATH:/usr/local/mysql/bin
export PATH
保存退出,为了生效我们重新登录,这个为了不影响全局,也方便以后的删除。

为了其他用户来执行时也能找到man命令,我们编辑一下:vim /etc/man.config添加如编译安装apache+mysql+php_编译安装apache_14

为了以后其他软件用mysql能找到mysql的库文件,我们要编译vim /etc/ld.so.conf.d/mysql.conf添加内容:
/usr/local/mysql/lib
保存退出因为让库文件能到缓存中,所以用命令ldconfig 从新加载

为了让头文件也能被搜索这可以通过简单的创建链接实现:
 ln -sv /usr/local/mysql/include  /usr/include/mysql

三、编译安装php-5.4.8

1、解决依赖关系:

为了让编译的php支持mcrypt扩展,此处还需要下载如下两个rpm包并安装之:
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
安装使用;rpm -ivh libmcrypt-2.5.7-5.el5.i386.rpm libmcrypt-devel-2.5.7-5.el5.i386.rpm
2、编译安装php-5.4.8
首先下载源码包至本地目录。
 tar xf php-5.4.8.tar.bz2
 cd php-5.4.8
 ./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默认安装路径,-with-mysql支持mysql,--with-mysqlimysql的接口并且这个接口是个程序,--enable-mbstring支持多字节的字符,--with-freetype-dir支持高质量的且可移植的字体引擎,--with-zlib支持压缩库
--with-libxml-dir 扩展标记语言库,--enable-xml支持xml,--enable-sockets 让apache支持sockets通信,--with-apxs2是apache的钩子能让apache编程能模块,--with-config-file-path配置文件的路径,--with-bz2 让apache支持bz2压缩
这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。make
 make test(是用测试)
 make intall

为php提供配置文件:cp php.ini-production /etc/php.ini

编辑apache配置文件httpd.conf,以apache支持php切入目录中cd /etc/httpd/
 vim /etc/httpd/httpd.conf修改内容如下:编译安装apache+mysql+php_编译安装mysql_15

添加index.php在index.html之前,是因为它是按照顺序查找编译安装apache+mysql+php_编译安装php_16

然后httpd -t检查语法
而后重新启动httpd,用service httpd restart
测试php是否已经可以正常使用。

四、安装xcache,为php加速:

1、安装
# tar xf xcache-2.0.0.tar.gz
# cd xcache-2.0.0(切入到目录中)
# /usr/local/php/bin/phpize(执行以下php的执行命令,是把它做成apache的模块了)
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install
补充:
--with-php-config是支持php-config的路径
--enable-xcache是做成apache的一个模块
安装结束时,会出现类似如下行:
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

2、编辑php.ini,
首先将xcache提供的样例配置导入php.ini
# mkdir /etc/php.d
# cp xcache.ini /etc/php.d
补充:xcache.ini文件在xcache的源码目录中。

接下来编辑/etc/php.d/xcache.ini,修改为如下:编译安装apache+mysql+php_编译安装apache_17

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