CentOS7的镜像中已经提供了httpd-2.4的rpm包,httpd-2.4相对于httpd2.2有较大的改进,在CentOS6下只能通过Apache官方网站提供的源码包编译安装。
有时候,我们需要应用http-2.4的某些特性,但是因为当前的发行版没有支持,所以我们需要自己编译安装。
httpd-2.4新特性介绍
(1) MPM支持运行为DSO机制;以模块形式按需加载;
(2) event MPM生产环境可用;
(3) 异步读写机制;
(4) 支持每模块及每目录的单独日志级别定义;
(5) 每请求相关的专用配置;
(6) 增强版的表达式分析式;
(7) 毫秒级持久连接时长定义;
(8) 基于FQDN的虚拟主机也不再需要NameVirutalHost指令;
(9) 新指令,AllowOverrideList;只能将那些文件放在,htaccess文件中;
(10) 支持用户自定义变量;
(11) 更低的内存消耗;
引入新模块:
(1) mod_proxy_fcgi :httpd-2.2没有被整合进httpd,需要自己装载
(2) mod_proxy_scgi :反向代理模块
(3) mod_remoteip :基于IP的访问控制机制被改变
一、提供开发环境
1.开发环境包组:Development Tools, Server Platform Development
2.开发程序包:pcre-devel 需要手动安装
# yum groupinstall -y "Development tools" "Server platfrom Development" # yum install -y pcre-devel
二、获取源码包
可从官网获取www.apache.org,此处在ftp服务器上获取
lftp 172.18.0.1 > cd pub/Sources/sources/httpd/ > mget apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 > mget httpd-2.4.10.tar.bz2
三、解决apr的依赖关系
apr简介:
apache portable runtime(Apache可移植运行环境) ,Apache是一个跨平台的web服务器,为了避免在跨平台是需要重复写代码来调用API来驱动运行环境 故apache的开发者开发福一个类似于虚拟机的东西,来实现一个运行Apache的统一接口,此即为apr.
因为CentOS 6 默认的apr是apr-1.3.9, apr-util-1.3.9 ;但是httpd-2.4依赖于apr-1.4+, apr-util-1.4+, [apr-iconv]故我们需要先解决apr的依赖关系。
注意:因为apr-util 依赖于apr,故先安装被依赖的程序包apr-1.4+。
(1) apr-1.4+
# tar -xf apr-1.5.0.tar.bz2 # cd apr-1.5.0 # ./configure --prefix=/usr/local/apr 指明安装目录卸载时,只需删除此目录 # make && make install
(2) apr-util-1.4+
# 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 -j 2 && make install
注意:一定要指明所依赖包的路径否则其会去/usr路径查找,找不到就会报错
四、编译安装 httpd-2.4
# yum install -y openssl-devel (编译过程提示mod_ssl版本太低) # tar -xf httpd-2.4.10.tar.bz2 # cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache24 安装路径 --sysconfdir=/etc/httpd24 配置文件路径 --enable-so 支持dso机制 --enable-ssl --enable-cgi --enable-rewrite 支持url重写 --with-zlib 依赖zlib环境,其提供压缩库,实现页面文件压缩后的发送接收 --with-pcre 支持perl扩展的正则表达式模式 --with-apr=/usr/local/apr 不指明其会到/usr默认路径查找 --with-apr-util=/usr/local/apr-util --enable-modules=most 启用那些模块,有列表此处most大多数模块 --enable-mpms-shared=all 需要将那些mpm编译成共享模块 --with-mpm=prefork 将哪个mpm当作默认的mpm机制配置 # make && make install
五、启动http-2.4
1)使用自带的服务控制脚本启动
apachectl,编译安装不在PATH路劲中,我们需要自行导入,注意:编译安装需要绝对路径启动
# /usr/local/apache24/bin/apachectl
2)导入PATH环境变量中
# vim /etc/profile.d/apache24.sh export PATH=/usr/local/apache24/bin:$PATH # . /etc/profile.d/apache24.sh # apachectl stop # hash 可用hash命令查看此命令是从哪里启动的。 hits command 1 /usr/local/apache24/bin/apachectl
3)输出头文件
# ln -sv /usr/local/apache24/include/ /usr/include/httpd
4)导出库文件
# ldconfig -p 查看已加载的库文件 # vim /etc/ld.so.conf.d/httpd.conf /usr/local/apache24/lib # ldconfig -v 重新加载库文件
(5)提供一个服务脚本文件(修改原有的服务脚本文件)
# cd /etc/rc.d/init.d/ # cp httpd httpd24 # vim httpd24
修改以下项为:
apachectl=/usr/local/apache24/bin/apachectl httpd=${HTTPD-/usr/local/apache24/bin/httpd} pidfile=${PIDFILE-/usr/local/apache24/logs/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
(6)手动将此配置文件加入服务控制列表
# chkconfig --add httpd24 # service httpd24 start
(7)切换mpm机制
编辑httpd.conf确保mpm相关指令开启
# vim /etc/httpd24/httpd.conf Include /etc/httpd24/extra/httpd-mpm.conf 去掉注释,确保能加载extra/httpd-mpm.conf文件 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so 装载选用的mpm机制此处为prefork # service httpd24 restart # httpd -M|grep mpm
补充:
所有的配置文件在安装路径/usr/local/apache24/下
编译安装步骤可在/usr/local/apache24/build/config.nice查看
#less /usr/local/apache24/build/config.nice #! /bin/sh # # Created by configure "./configure" \ "--prefix=/usr/local/apache24" \ "--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=prefork" \ "$@" /usr/local/apache24/build/config.nice (END)
好了,http-2.4现在已经启动完成,我们可以查看端口80是否已经处于监听状态来进行验证。
原创文章,作者:MyBlog,如若转载,请注明出处:http://www.178linux.com/26414