httpd2.4变更概览
1、新增了一些特性:
- MPM 支持运行为DSO(动态共享)机制;以模块形式按需加载;
- event MPM 生产环境可用;
- 异步读写机制;
- 支持每模块及每目录的单独日志级别定义;
- 每请求相关的专用配置;
- 增强版的表达式分析式;
- 毫秒级持久连接时长定义;
- 基于 FQDN 的虚拟主机也不再需要 NameVirutalHost 指令;
- 新指令,AllowOverrideList;
- 支持用户自定义变量;
- 更低的内存消耗;
2、新增了几个模块:
- mod_proxy_fcgi;
- mod_proxy_scgi;
- mod_remoteip;
3、修改了一些配置机制:不再支持使用 Order、Deny、Allow 来做基于 IP 的访问控制。
CentOS 6源码安装httpd2.4
依赖说明
httpd 2.4 依赖于:
- apr-1.4+;
- apr-util-1.4+;
- apr-iconv(可选);
- 开发环境包组:
Development Tools, Server Platform Development
; - 开发程序包:
pcre-devel
;
apr:apache portable runtime,可以看作是 apache 虚拟机。
CentOS 6 中默认:apr-1.3.9, apr-util-1.3.9。
安装
由于 CentOS 6 中本来就有 apr-1.3.9 和 apr-util-1.3.9,所以这里我们使用源码安装 apr-1.4+
和 apr-util-1.4+
。
扫描文章首部二维码或
zze_coding
关注微信公众号发送#httpd-2.4-apr
获取apr-1.4+
依赖源码包,发送#httpd_sourcecode
获取httpd-2.2
和httpd-2.4
源码包。
1、解压:
$ tar xf apr-1.5.0.tar.bz2
$ tar xf apr-util-1.5.3.tar.bz2
$ tar xf httpd-2.4.9.tar.bz2
2、进入 apr-1.5.0
执行编译安装操作:
$ ./configure --prefix=/usr/local/apr
$ make & make install
3、进入apr-util-1.5.3
执行编译安装操作:
$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
$ make && make install
4、安装 pcre-devel
包:
$ yum install pcre-devel -y
5、添加 apache
用户和组:
$ groupadd -r apache
$ useradd -r -g apache apache
6、编译安装 httpd-2.4
源码包:
$ cd httpd-2.4.9
$ ./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
$ make && make install
7、启动 httpd-2.4:
$ /usr/local/apache24/bin/apachectl start
8、浏览器访问测试:
编译安装的 httpd2.4 的配置文件结构和 rpm 方式安装的不同,它的主配置文件直接放在
/etc/httpd24
下,名为httpd.conf
。
而它的辅助配置文件在/etc/httpd24/extra
下。
CentOS7中的httpd2.4
安装
在 CentOS 7 上直接使用 yum 安装 httpd2.4 即可:
$ yum install httpd -y
配置文件
在 CentOS 7 中,httpd2.4 的配置文件如下:
- 主配置文件:
/etc/httpd/conf/httpd.conf
; - 模块配置文件:
/etc/httpd/conf.modules.d/*.conf
; - 辅助配置文件:
/etc/httpd/conf.d/*.conf
;
切换MPM
httpd2.4 已经可以将 MPM 模块以 DSO 的方式动态加载,所以切换 MPM 模块时并不需要向 httpd2.2 一样切换主程序,只需要编辑配置文件 /etc/httpd/conf.modules.d/00-mpm.conf
,启用要启用的 MPM 相关的 LoadModule
指令即可。
分文件配置
查看主配置文件 /etc/httpd/conf/httpd.conf
的最后一行:
$ tail -1 /etc/httpd/conf/httpd.conf
IncludeOptional conf.d/*.conf
可以看到该行配置将 /etc/httpd/conf.d/
目录下的所有以 .conf
结尾的文件引入生效,所以当我们有新配置时就可以单独在该目录下新建配置文件而不用编辑原有配置,从而实现片段化配置。
基于IP的访问控制
允许所有主机访问:Require all granted
;
拒绝所有主机访问:Require all deny
;
控制特定的IP访问:
Require ip IPADDR
:授权指定来源的IP访问;Require not ip IPADDR
:拒绝;
控制特定的主机访问:
Require host HOSTNAME
:授权指定来源的主机访问;Require not host HOSTNAME
:拒绝;
HOSTNAME
可指定 FQDN(特定主机),也可指定domin.tld
(域名下的所有主机)。
当 Require
有多项时不能直接在 Directory
中定义,需要在 <Directory>
下再创建一个 <RequireAll>
块,再将 Require
项定义在其中,如:
<RequireAll>
Require all granted
Require not ip 172.16.100.2
</RequireAll>
虚拟主机配置
httpd2.4 和 httpd2.2 的虚拟主机配置区别不大,只是在 httpd2.4 中基于 FQDN 的虚拟主机不需要 NameVirutalHost
指令了,直接配置即可,要注意的是,任意目录下的页面只有显式授权才能被访问。
评论区