Apache/httpd(12)之httpd2.4安装与说明

Apache/httpd(12)之httpd2.4安装与说明

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

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.2httpd-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、浏览器访问测试:

image.png

编译安装的 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 指令了,直接配置即可,要注意的是,任意目录下的页面只有显式授权才能被访问。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/apachehttpd12.html

Buy me a cup of coffee ☕.