http2.4配置和编译

1. 新特性

 (1) MPM支持运行为DSO机制;以模块形式按需加载
 (2) event MPM生产环境可用
 (3) 异步读写机制
 (4) 支持每模块及每目录的单独日志级别定义
 (5) 每请求相关的专用配置
 (6) 增强版的表达式分析式
 (7) 毫秒级持久连接时长定义
 (8) 基于FQDN的虚拟主机不需要NameVirutalHost指令
 (9) 新指令,AllowOverrideList
 (10) 支持用户自定义变量
 (11) 更低的内存消耗

2. httpd-2.4

 修改了一些配置机制
不再支持使用Order, Deny, Allow来做基于IP的访问控制
 新模块

(1) mod_proxy_fcgi

FastCGI Protocol backend for mod_proxy

(2) mod_remoteip

Replaces the apparent client remote IP address and hostname for the request with the IP address list presented by a proxies or a load balancer via the request headers.

(3) mod_ratelimit

Provides Bandwidth Rate Limiting for Clients

3.CentOS 7 httpd程序环境

 CentOS 7:httpd-2.4
 安装方法:rpm,编译安装
 Rpm安装程序环境:

配置文件:

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf

模块相关的配置文件:

/etc/httpd/conf.modules.d/*.conf

systemd unit file:

/usr/lib/systemd/system/httpd.service

主程序文件:

/usr/sbin/httpd
httpd-2.4支持MPM的动态切换

日志文件:

/var/log/httpd
access_log:访问日志
error_log:错误日志

站点文档:

/var/www/html

模块文件路径:

/usr/lib64/httpd/modules

服务控制:

systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service

httpd-2.4配置

 配置应用:

(1) 切换使用的MPM

 Centos 7:/etc/httpd/conf.modules.d/00-mpm.conf
启用要启用的MPM相关的LoadModule指令即可
 centos6编译安装:
vim /etc/httpd24/httpd.conf
Include /etc/httpd24/extra/httpd-mpm.conf
LoadModule mpm_event_module
modules/mod_mpm_event.so

(2)主目录:

DocumentRoot /path

(3) 基于IP的访问控制:

无明确授权的目录,默认拒绝
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all denied
控制特定的IP访问:
Require ip IPADDR:授权指定来源的IP访问
Require not ip IPADDR:拒绝特定的IP访问
控制特定的主机访问:
Require host HOSTNAME:授权特定主机访问
Require not host HOSTNAME:拒绝
HOSTNAME:
FQDN:特定主机
domin.tld:指定域名下的所有主机
 不能有失败,至少有一个成功匹配
<RequireAll>
Require all granted
Require not ip 172.16.100.2 拒绝特定IP
</RequireAll>
 多个语句有一个成功,即成功
<RequireAny>
……
</RequireAny>

(4) 虚拟主机

基于FQDN的虚拟主机也不再需要NameVirutalHost指令
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot "/apps/b.net/htdocs"
<Directory "/apps/b.net/htdocs">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
注意:任意目录下的页面只有显式授权才能被访问
(4) ssl:安装mod_ssl,和httpd-2.2相同配置
(5) KeepAlive on
KeepAliveTimeout #ms
MaxKeepAliveRequests 100
毫秒级持久连接时长定义

3.Sendfile机制

 不用 sendfile 的传统网络传输过程:
 read(file, tmp_buf, len)
 write(socket, tmp_buf, len)
 硬盘 >> kernel buffer >> user buffer >> kernel socket buffer >> 协议栈
 一般网络应用通过读硬盘数据,写数据到 socket 来完成网络传输,底层执行过程:
 1 系统调用 read() 产生一个上下文切换:从 user mode 切换到 kernel mode,然后 DMA 执行拷贝,把文件数据从硬盘读到一个 kernel buffer 里。
 2 数据从 kernel buffer 拷贝到 user buffer,然后系统调用 read() 返回,这时又产生一个上下文切换:从kernel mode 切换到 user mode
 3 系统调用 write() 产生一个上下文切换:从 user mode 切换到 kernel mode,然后把步骤2读到 user buffer 的数据拷贝到 kernel buffer(数据第2次拷贝到kernel buffer),不过这次是个不同的 kernel buffer,这个buffer socket相关联。
 4 系统调用 write() 返回,产生一个上下文切换:从 kernel mode 切换到 user mode(第4次切换),然后DMA从 kernel buffer 拷贝数据到协议栈(第4次拷贝)
 上面4个步骤有4次上下文切换,有4次拷贝,如果能减少切换次数和拷贝次数将会有效提升性能
 在kernel 2.0+ 版本中,系统调用 sendfile() 就是用来简化上面步骤提升性能的。sendfile() 不但能减少切换次数而且还能减少拷贝次数
 用 sendfile() 来进行网络传输的过程:
 sendfile(socket, file, len);
 硬盘 >> kernel buffer (快速拷贝到kernel socket buffer)

协议栈
 1 系统调用 sendfile() 通过 DMA 把硬盘数据拷贝到 kernel
buffer,然后数据被 kernel 直接拷贝到另外一个与 socket 相关的 kernel buffer。这里没有 user mode 和 kernel mode 之间的切换,在 kernel 中直接完成了从一个 buffer 到另一个 buffer的拷贝。
 2 DMA 把数据从 kernel buffer 直接拷贝给协议栈,没有切换,也不需要数据从 user mode 拷贝到 kernel mode,因为数据就在kernel 里

4.反向代理功能

 启用反向代理
ProxyPass "/" "http://www.example.com/"
ProxyPassReverse "/" "http://www.example.com/"
 特定URL反向代理
ProxyPass "/images" "http://www.example.com/"
ProxyPassReverse "/images" http://www.example.com/
 示例:
<VirtualHost *>
ServerName www.magedu.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>

5.APR

 APR(Apache portable Run-time libraries,Apache可移植运行库) 主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数
 随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。目前APR主要还是由Apache使用,由于APR的较好的移植性,因此一些需要进行移植的C程序也开始使用APR,开源项目比如用于服务器压力测试的Flood loader tester,该项目不仅仅
适用于Apache,http://httpd.apache.org/test/flood

6.在centos6编译安装httpd-2.4

 安装httpd-2.4
 依赖于apr-1.4+, apr-util-1.4+, [apr-iconv]
 apr: apache portable runtime,解决跨平台实现
 CentOS 6:默认:apr-1.3.9, apr-util-1.3.9
 安装前准备开发包:
 开发环境包组:
Development Tools,Server
开发程序包:pcre-devel,openssl-devel
 下载源代码并解压缩:
http://www.apache.org/index.html#projects-list
apr-1.5.2.tar.bz2
apr-util-1.5.4.tar.bz2
httpd-2.4.27.tar.bz2
129
在centos6 编译安装httpd-2.4
 (1)安装apr-1.4+
./configure --prefix=/usr/local/apr
make && make install
 (2)安装apr-util-1.4+
./configure --prefix=/usr/local/apr-util --withapr=/usr/local/apr
make && make install
 (3)编译安装httpd-2.4
./configure --prefix=/usr/local/httpd24 --
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 --withmpm=prefork
make && make install
130
在centos6 编译安装httpd-2.4
 或者下面方法
 mv apr-1.5.2/ httpd-2.4.27/srclib/apr
 mv apr-util-1.5.4/ httpd-2.4.27/srclib/apr-util
 cd httpd-2.4.27/
 ./configure --prefix=/usr/local/httpd24 --enableso
--enable-ssl --enable-cgi --enable-rewrite --
with-zlib --with-pcre --with-included-apr --
enable-modules=most --enable-mpms-shared=all --
with-mpm=prefork
 Make && make install
 Httpd编译过程:/usr/local/apache24/build/config.nice
 自带的服务控制脚本:/usr/local/httpd24/bin/apachectl

 vim /etc/profile.d/httpd24.sh
export PATH=/app/http24/bin:$PATH
 vim /etc/man.config
MANPATH /usr/local/apache24/man
 自定义启动脚本(参考httpd-2.2的服务脚本)
cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd24
vim /etc/rc.d/init.d/httpd24
apachectl=/usr/local/httpd24/bin/apachectl
httpd=${HTTPD-/usr/local/httpd24/bin/httpd}
pidfile=${PIDFILE-/usr/local/httpd24/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
chkconfig –add httpd24 ;chkconfig –list httpd24

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容