概念知识:
通过http服务通讯的过程:
此过程在TCP/IP四层网络模型如下进行:
HTTP相关术语
http: Hyper Text Transfer Protocol, 80/tcp
html: Hyper Text Markup Language 超文本标记语言,编程语言
工作机制:
http请求:http request
http响应:http response
一次http事务:请求<-->响应
Web资源:web resource
一个网页由多个资源构成,打开一个页面,会有多个资源展示出来,但是每个资 源都要单独请求。
因此,一个“Web 页面”通常并不是单个资源,而是一组资源的集合。
静态文件:无需服务端做出额外处理 文件后缀:.jpg, .html, .txt, .js, .css, .mp3, .avi
动态文件:服务端执行程序,返回执行的结果 文件后缀:.asp, .php, .jsp
提高HTTP连接性能
并行连接:通过多条TCP连接发起并发的HTTP请求
持久连接:keep-alive,长连接,重用TCP连接,以消除连接和关闭的时延,以事 务个数和时间来决定是否关闭连接
管道化连接:通过共享TCP连接发起并发的HTTP请求
复用的连接:交替传送请求和响应报文(实验阶段)
一次完整的http请求处理过程如下,
HTTP服务安装
这里只做源码编译安装,通过yum源安装就不做详细讲解了。
在安装前有一个概念需要了解,早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节, 并针对不同的平台调用不同的处理函数。
后期为方便维护开发了APR(Apache portable Run-time libraries,Apache可移植运行库) 主要为上 层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
因此我们需要准备以下源码包(这是截至2018/6/21相对比较新的包):
httpd-2.4.33.tar.bz2
apr-1.6.3.tar.bz2
apr-util-1.6.1.tar.bz2
通过yum安装开发环境包组(编译工具):
Development Tools,Server
相关包:pcre-devel,openssl-devel expat-devel
-
准备相关软件包及环境
-
解压缩
-
编译过程
编译过程刚开始接触的话很麻烦,因为可能会遇到各种各样的报错
建议根据编译报错信息到网上查询,一般都是缺少依赖包造成的
预编译过程中很可能会遇到缺依赖包的情况,例如以下我遇到的情况:
从表面上看这里提示openssl 版本位达到要求版本,并且缺少mod_ssl
先不要急着安装openssl或者mod_ssl,因为yum install mod_ssl会直接连带httpd一起安装上,
那就成了yum安装httpd了
这里建议先在网上搜搜资料,因为除非你将编译安装玩了成百上千遍,已经知道了各种编译报错。
我这里的报错是缺少openssl-devel包,使用yum install openssl-devel即可
然后再次预编译通过
进行make编译并安装,这里使用-j 2表示并行数,根据自己的CPU核数设定,也可以不用-j
但是即使configure阶段没有问题了,也不代表make能成功,我这里遇到以下情况
这还是因为缺少依赖包expat-devel,
执行yum install expat-devel
之后还有其它错误,都是通过在网上搜索报错信息解决
这里我还执行了yum install libxml2-devel
然后重新make && make install,以下是最后完成截图:
-
配置环境变量
未完待续....