当使用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
启动后效果如图:
在httpd-2.2版本中切换httpd装置的MPM模块是在程序的脚本配置文件中修改,但是在2.4中提供了动态加载的功能,可以直接在配置文件中修改装置的LoadModule选项,同时启用该模块对应的配置文件即可。
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功能:
然后编辑/etc/httpd24/extra/httpd-vhosts.conf文件中的虚拟主机定义:
在虚拟主机的定义中指定了DocumentRoot后,必须提供该目录的访问权限定义从允许访问根目录内的文件。