安装httpd
yum -y install httpd
程序环境
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
模块相关的配置文件
/etc/httpd/conf.modules.d/
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
开启httpd服务
通过客户端打开默认主页面
这里要注意本机的SElinux和防火墙的设置,在测试阶段最好先全部关闭。
来自己新增一个测试页
为什么要在这个目录下创建页面文件呢?
httpd的配置文件中默认的页面文件路径是这个,可以修改。
httpd的常用配置
/etc/httpd/conf/httpd.conf是httpd应用的主配置文件
主配置文件中包括1、全局配置 2、核心主机配置 3、虚拟主机配置
注意:核心主机配置和虚拟主机配置是互斥的。核心主机配置是让一台服务器只为一个web域名服务,虚拟主机是让一台服务器可以为多个域名服务
1、修改监听IP和端口
默认是监听80端口 我现在修改成8080
重启httpd服务
现在80端口下没有响应
8080有响应了
现在再看看系统的监听端口
2、长连接
长连接可以使一个httpd事务重复多次响应多次相同的请求。副作用是对并发量较大的服务器来说,长连接使得后来的请求不能得到及时的响应,因为为了保持长连接服务器需要消耗大量的资源
默认的长连接的功能是开启的
3、MPM
多进程处理机制
首先查看当前的处理机制 prefork
httpd -
更换MPM机制
首先停止服务
编辑httpd MPM的配置文件
这个是默认的参数 我修改一下
启动httpd服务
httpd -M
4、定义Main Server的文档页面路径
创建/apps/httpd目录 并创建一个新的测试页面文件
5、日志设置
combined 日志的格式 比如是否包含客户IP,时间戳,浏览器类型
combined 格式的内容如何指定?LogFormat
至于每个符号代表的意思,只能去查apache的官方文档。里面有个formate Strings连接专门讲符号意义。
%h:客户端IP地址
%I:Remote User
%u:登录访问时的远端用户
%t:服务器收到请求的时间
%r:First line of request,记录了请求中的通信方式,URL以及协议
%>s:响应状态码
%b:响应报文的大小(字节为单位)
%(Referer)i:请求报文中首部”referer”的值,即从哪个页面跳转至此页面
%(User-Agent)i:请求报文中”User-Agent”的值,即发出请求的应用程序。
访问日志文件位于
错误日志也位于此目录
现在看来日志存放有两处。
6、虚拟主机
通过不同的URL获得不同的访问页面
首先需要注释掉主服务器上的DocumentRoot
再创建虚拟主机的配置文件
标红的是为了指定默认页面文件
修改客户端的主机解析或者DNS
通过应用测试
7、运行httpd的用户名和组名
8、httpd自带的页面统计助手
httpd.conf 配置文件默认是没有这个功能配置的
http协议
http协议是无状态协议。服务器无法持续追踪访问者来源,其现象是如果需要认证,每次刷新页面都需要认证。
为了优化这种访问方式,引入了cookie机制。终端设备会根据不同的站点生成不同的cookie,让服务器进行终端识别。
cookie:分为瘦cookie和胖cookie
session是服务器为每个客户端分配的一个微小数据结构,这个数据结构关联了cookie。
http事务
一次请求和一次响应叫做一次事务
1、报文语法格式:
request报文
<method><request-URL><version>
<headers> 首部
<entity-body> 真实数据载体
response报文
<version><status><reason-phrase>
<headers>
<entity-body>
2、method
请求资源的方法:1、GET 2、HEAD(仅返回响应报文首部) 3、POST(向服务器发送要处理的数据) 4、PUT 向服务器发送数据(上传) 5、DELETE 请求删除服务器上的文件 6、TRACE 追踪请求达到服务器的过程。7、OPTIONS 请求服务器返回对指定资源支持使用的请求方式。
3、version:
HTTP/<major>.<minor>
4、status:
三位数字,如200、301、302、404、502标记请求处理过程中发生的情况。
1xx:100-101,信息提示
2xx:200-206,成功
3xx:300-305,重定向
4xx:400-415,错误类信息,客户端错误
5xx:500-505,错误类信息,服务器端错误
常用的状态码:
200:成功,请求的所有数据通过响应报文的entity-body部分发送 OK
301:请求的URL指向的资源已经被删除,但在响应报文中通过首部Location指明了资源现在所处的新位置。Moved Permanently
302:与301相似,但在响应报文中通过Location指明资源现在所处的临时位置。
304:客户端发出了条件式请求。但服务器上的资源未曾发生改变
401:需要输入账号和密码认证方才能访问资源
404:服务器无法找到相应资源
500:服务器内部错误。
502:代理服务器从上游服务器收到了一条伪响应。
5、reason-phrase:
状态码的简要描述
6、headers
header并不是关键字,而是首部代名词。
首部分类:1、通用首部 2、请求首部 3、响应首部 4、实体首部 5、扩展首部