从最简单的静态服务器开始。
之前说过,http是应用层协议,必定会在用户空间体现出具体的应用程序。常见的http服务器:
httpd(apache)
nginx
lighttpd
以上皆是静态服务器,除此之外还有一些能够处理动态网页的应用程序服务器:
IIS
tomcat,jetty,jboss
自然,这里所讲述的仅仅是盛名已久的apache。
蛮荒时代之时在NCSA(美国计算机安全协会)号召聚集众多工程师开发了一款能够提供完整服务的web软件,后来项目完成之后,众工程师去往各大IT公司。但是,由于对此项目还是怀有情怀,于是自发发起维护其项目,不断且无偿的为其更新补丁,所以此服务也被称为a patchy server,简称apache,其意为充满补丁的服务器。
同时,也就是期间的无意之举,造就了apache的诞生。
在此事后两年,apache上线且迅速得取缔的旧版本,并且占据了约百分之五十的份额,形成自然垄断,既然是天赐良机,为何不把握机会,所以apache基金会成立。现今,在美国apache有三种含义,一层为阿帕奇族,二层为阿帕奇武装直升机,三层为阿帕奇软件基金会。
二、特性:
http的特性:
高度模块化特性:core+modules
DSO(Dynamic Shared Object)
多路处理模块(MPM)
prefork:多进程模型,每个进程响应一个请求。一个主进程,负责生成n个子进程,子进程为工作进程,每个子进程处理一个用户请求,如果没有用户请求,也会生成空闲进程,随时等待请求到达,最大不会超过1024个。主进程只负责接受请求,随后将请求交给子进程,由子进程处理请求,最后再由主进程响应客户端
worker:多进程多线程,一个进程生成多个线程,一个线程响应一个请求
event:事件驱动模型,一个进程生成多个线程,一个线程响应多个请求,最多能够响应(n*m)个请求。在worker模型下添加了一个事件驱动机制,让其能够同时响应多个请求
虚拟主机
负载均衡
路径别名
用户认证
basic认证
digest认证
支持第三方模块
三、配置
http2.4配置:
默认工作目录在/etc/http下
主配置文件/etc/http/conf/http.conf
包括配置文件/etc/http/conf.d/*.conf
日志记录文件:
/var/log/http
access_log 访问日志
error_log 错误日志
模块目录:
/etc/httpd/conf.modules.d/*.conf
站点文档目录:
/var/www/html
主配置文件/etc/http/conf/http.conf配置
(1)修改监听地址
Listen 【ip】:PORT
~]# vim /etc/httpd/conf/httpd.conf Listen 80