当使用rpm包安装httpd时,如果其提供的特性不符合我们的需求,或老版本rpm包有漏洞,就需要手动编译安装httpd,以2.4版本为例,说明httpd2.4的编译安装过程。


一、安装前的准备工作:

# yum groupinstall "Development tools"

# yum groupinstall "Server Platform Development"

上面两个开发包组是很多应用程序编译安装需要依赖的,所以要提前安装。

# yum install mod_ssl;如果使得httpd支持ssl功能还需要安装mod_ssl模块

# yum install pcre-devel;如果要实现url重写的功能,需要安装pcre-devel包。

httpd程序依赖于apr和apr-util两个包,apr是指apache的可移植运行环境,类似于apache运行所需要的虚拟机,不同平台上需要的apr版本不同,httpd的不同版本需要使用的apr版本也各不相同,在CentOS6.5版本的Linux系统上默认安装的apr版本是1.3.9,而httpd2.4版本依赖的apr版本要求是1.4以上所以需要提前安装新版本的apr和apr-util

以最新版本的apr1.5.1为例编译安装apr:

# tar xf apr-1.5.1.tar.bz2

# cd apr-1.5.1

# ./configure --prefix=/usr/local/apr-1.5.1;要安装在新的路径下,不覆盖老版本的apr

# make && make install

编译安装apr-util-1.5.3的版本,步骤如下:

# tar xf apr-util-1.5.3.tar.bz2

# cd apr-util-1.5.3

# ./configure --prefix=/usr/local/apr-1.5.3 --with-apr=/usr/local/apr-1.5.1

编译安装httpd-2.4.10

# tar xf httpd-2.4.10.tar.bz2

# cd httpd-2.4.10

# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr1.5.1/ --with-apr-util=/usr/local/apr-util-1.5.3/ --enable-mpms-shared=all --with-mpm=event --enable-modules=most 

# make && make install

安装完成后把/usr/local/apache/bin目录中的可执行程序路径加入到PATH环境变量中:

# vim /etc/profile.d/httpd24.sh

export PATH=/usr/local/apache/bin:$PATH;在httpd24.sh文件中添加此行内容

# source /etc/profile.d/httpd24.sh

导出帮助文档:

# vim /etc/man.config

MANPATH /usr/local/apache/docs;在man.config文件中添加此行内容

启动服务,注意,在启动新的httpd服务之前,需要查看之前是否已经启动了老版本的httpd服务,如果已经启动,需要先将其服务停止,然后再启动:

# apachectl 

启动后效果如图:

wKioL1PoulCDtQQeAACLYLgqewI814.jpg

在httpd-2.2版本中切换httpd装置的MPM模块是在程序的脚本配置文件中修改,但是在2.4中提供了动态加载的功能,可以直接在配置文件中修改装置的LoadModule选项,同时启用该模块对应的配置文件即可。wKioL1PouymiCzjsAAEZ0oNttnU988.jpgwKiom1Pouhmxxk85AABmULcPIvc001.jpg


httpd-2.4版本的使用:

基于IP做访问控制:

    允许所有主机访问:Require all granted

    拒绝所有主机访问:Require all deny

控制某特定主机访问的:

    Require ip IPADDR

    Require not ip IPADDR

    如果单独定义某ip不能访问,那么需要将该ip定义在<RequireAll>...</RequireAll>中。

    IPADDR在使用时可以使用某个网段或者单独的IP都可以。网段可以使用多种方式例如:

    192.168.1.0/24或者携程192.168.1。

基于主机名做访问控制:

    Require host HOSTNAME

    Require not host HOSTNAME

使用基于名称的虚拟主机功能,先将中心主机的DocumentRoot行注释掉,启用Virtual hosts功能:

wKioL1PowVmTwcXGAACdtzXRmXY392.jpg

然后编辑/etc/httpd24/extra/httpd-vhosts.conf文件中的虚拟主机定义:

wKiom1PowxrQTJWEAAE_mERJJDg092.jpg

在虚拟主机的定义中指定了DocumentRoot后,必须提供该目录的访问权限定义从允许访问根目录内的文件。