CentOS6 编译安装httpd-2.4

   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

(0)
MyBlogMyBlog
上一篇 2016-07-27 15:15
下一篇 2016-07-28 21:51

相关推荐

  • N25第四周 chmod chown以及 grep命令的常用示例

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     [root@localhost ~]# cp -r /etc/skel /home/tuser1   &n…

    Linux干货 2016-12-22
  • ​iptables简单介绍

    iptables简单介绍 什么是防火墙? 防火墙是工作在主机或网络边缘,能够对其所匹配到的报文根据事先定义好的规则作出相应处理的组件,可以是软件,也可以是硬件,还能软硬结合实现。 UNIX/Linux中对防火墙的实现 早期在openBSD中通过内核中的ipfw实现简单的数据报过滤功能、后来在Linux 2.2内核中使用ipchains来取代,意为链、后来在L…

    Linux干货 2016-03-31
  • LVM管理

    一、简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM的工作原理是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对…

    Linux干货 2016-09-06
  • Linux 任务计划、周期性任务执行

    Linux 任务计划、周期性任务执行 概述:      什么是任务计划呢?就像我们每个人日常生活中都会使用到的闹钟一样,按时的去提醒该去做什么事情,以免忘记。同样,我们在工作当中也要在每天在特定的时间内安排做一些事情,这就是任务计划,本章将学习如何制定Linux系统的任务计划,这里主要包括两种工具:at和crontab…

    Linux干货 2016-09-11
  • shell脚本编写-4

    1、while 循环的特殊用法(遍历文件的每一行) while read line; do 循环体 done < /PATH/FROM/SOMEFILE 依次读取/PATH/FROM/SOMEFILE 文件中的每一行,且将行赋值给变量line 练习:扫描/etc/passwd 文件每一行,如发现GECOS 字段为空,则填充用户名和单位电话为629856…

    Linux干货 2016-09-01
  • 马哥教育网络第21期-第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@6 ~]# …

    Linux干货 2016-08-29