[TOC]
1. httpd-2.4
新特性:
- (1) MPM -支持-> DSO, 模块形式按需加载
- (2) 支持event, 异步读写, 每模块, 目录各自配置日志
- (3) 每请求配置, 增强正则, 毫秒级keep ailved timeout
- (4) 支持用户自定义变量, 去除NameVirualHost
新模块:
mod_proxy_fcgi, mod_ratelimit, mod_remoteip
修改配置:
- 不再支持
order, deny, allow
来做基于IP的访问控制
2. 安装httpd-2.4
Centos 6:
提供apr-1.3.9, apr-util-1.3.9(与httpd-2.4要求不匹配)
-
httpd-2.4依赖apr (1.4级以上版本), apr-util (1.4级以上版本), [apr-icon]
apr: apache portable runtime, 阿帕奇运行时环境(阿帕奇虚拟机)
apr-util: 此为apr补充的工具组件
因此, Centos 6上想安装httpd-2.4, 只能编译安装, 具体步骤如下:
(1) 准备好1.4级以上版本的apr和apr-util
(2) 安装好开发环境
yum -y install "Development Tools" "Server Platform Development" pcre-devel
(3) 编译安装
# (3.1) apr
./configure --prefix=/usr/loca/apr # 避免覆盖旧版
make && make install
# (3.2) apr-util
./configure --prefix=/usr/local/apr-util --with=/usr/local/apr
# --with=/usr/local/apr 针对某个包执行编译
make && make install
# (3.3) httpd-2.4
groupadd -r apache && useradd -r -g apache apache
./configure --prefix=/usr/local/apache
--sysconf=/etc/httpd24 \ # 设定配置文件的位置
--enable-so \ # 支持动态模块
--enable-ssl \ # 支持ssl
--enable-cgi \ # 支持cgi机制
--enable-rewrite \ # 支持URL重写
--with-zlib \ # 压缩库
--with-pcre \ # 支持perl扩展正则
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
--enable-modules=most \ # 支持大多数常用模块, most可换为all
--enable-mpms-shared=all \ # 支持mpm的共享模块编译机制
--with-mpm=prefork \ # 设定默认使用mpm的机制
make && make install
(4) 启动服务
apachectl
Centos 7:
默认提供httpd-2.4版本
配置文件:
- 主:
/etc/httpd/conf/httpd.conf
- 模块:
/etc/httpd/conf.modules.d/*.conf
- 辅助:
/etc/httpd/conf.d/*.conf
mpm:
- 以DSO机制提供, 配置文件
/etc/httpd/conf.modules.d/mpm.conf
- 配置完成后重载服务:
systemctl reload httpd
直接给出的apachectl是rpm包生成的, 编译安装httpd-2.4需如此:
/usr/local/apache/bin/apachectl start
vim /etc/profile.d/httpd.sh # 自行将脚本文件的路径设定到PATH中
export PATH=/usr/local/apache/bin:$PATH
source /etc/profile.d/httpd.sh # 重载配置文件
具体配置:
(1) 切换使用 MPM
LoadModule mpm_NAME_module modules/mod_mpm_NAME.so
# NAME: prefork, worker, event
(2) 修改'Main' server的DocumentRoot
(3) 基于IP的访问控制方法
# (3.1) 允许所有主机访问:
Require all granted
# (3.2) 拒绝所有主机访问:
Require all deny
# (3.3) 控制特定IP访问 (指定的IP类型与http-2.2方式相同)
Require ip IPADDR # 允许
Require not ip IPADDR # 拒绝
# (3.4) 控制特定主机 (HOSTNAME可为FQDN特定主机或Domain域内所有主机)
Require host HOSTNAME
Require not host HOSTNAME
# 实例:
Require all granted # 上下位置无所谓
Require not ip 10.252.46.165
(4) 虚拟主机
支持基于IP, Port, FQDN的虚拟主机, 同时基于FQDN的虚拟主机不再需要NameVirtualHost指令
(5) ssl
启用模块: LoadModule ssl_module modules/mod_ssl.so
(6) Centos 6 服务脚本
cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
vim http24 # 自行按需配置启动脚本
chkconfig --add httpd24
chkconfig --list httpd24 # 查看是否配置好
chkconfig httpd24 on
service httpd24 start
reference: 马哥教育视频