apache有三种工作模型,
1.prefork
2.event
3.worker
合称MPM,实现方式在centos6,7上各不相同
centos6,静态编译
centos7是以模块化来提供
作为web服务,用户发送请求,到响应到结束,中间有7个过程
1.建立连接
2.接收请求(涉及到MPM,三种工作模型)
3.接收请求后,处理请求(根据用户发请求的报文头部,http协议中,有http的报文头部,根据报文头部,有一个method命令,方法,根据这个方法来如何处理,如GET下载资源)
5.获取资源,从磁盘上对应的路径中找到相应资源,(主要的配置实现,主要的目录默认是在/var/www/html/,如果要访问网站的子文件夹,url里,这个文件夹就有可能是主目录下的子文件夹)
可以是个软链接
也可以是个别名
http=sechma
www.magedu.com=fqdn
news =path
后面有可能是一些参数,查询query,farg锚点、
现在没有访问,所以机器是空的
一旦访问,日志就生成了
日志格式默认是,时间是带英文的,将来处理起来可能不是很好处理,可以进行转换,先打开配置文件定义
定制格式,可以查看帮助
可以看到年月日
天
小时
月份
Y包含世纪的年,y是0到99
时分秒都有了
标准的iso 8601格式
修改的话,要把格式放到花括号里带个T
改完之后下面要调用日志格式
改成
重启服务
再次访问
日期格式就变了。方便将来处理
如何把用户家目录共享出来,可以通过http把用户家目录共享出来(早期面试题)
现在想把wang用户家目录共享出来,需要调用模块
先确认模块是否启用
00-base.conf调用这个模块,既然调用了,就不需要修改配置,直接调用就可以了
centos6默认是有这段代码的,7需要自己去加
7在主配置文件中搜索一下,没有就自己加
这个就代表想要把public_html文件夹共享出来
现在wang账号家目录里是没有这个文件夹的,需要创建一个
访问要加上波浪符~wang
userdir要指定文件夹路径
访问格式
王的家目录这个权限,http好像进不来
http服务是以apache身份运行的,就需要加权限
apache现在有访问权限了,还是访问不了
好看主配置文件
没有userdir模块
查看module文件
已经启用了
系统自带的,我们自己的配置文件就不需要加
按照字母顺序是排在后面的生效,相当于把前面我们配置的都失效了
重启服务查看能否访问正常,可以了
在别的用户家目录创建这个文件夹就也可以共享
就可以访问了
以前面试题遇到过,如何链接用户家目录,但是现在每个用户家目录都共享出来 了。可以考虑加个验证
需要配合前面的验证方式
针对wang家目录就可以让wan用户输入密码才能看
**也可以设置组,先建立一个用户文件,用hdpasswd,把文件建立起来,可以在这个文件里创建好几个用户,将来还可以控制把不同的用户发到不同的组里,按组来分配权限,再创建一个组文件,组文件格式如下
**
authuserfile 存用户名密码的文件
authgroupfile 组的文件
require 组1 组2 需要指定
生成用户密码文件
创建组账号文件
只保留g1组
需要验证就登陆
说明下面配置没有生效
把配置放在这里试试,可能之前的覆盖冲突了
注释掉
重启服务就可以了
zhang属于第二组,就不行
配置文件有冲突,是放在后面的生效,放在前面的就会被覆盖
现在看起来是安全了,但是实际上抓包可以抓取密码数据
输入链接
开始抓包
回车输入密码账号
换个浏览器抓取,应该是能够看到的,因为是明文
所以我们有必要来做处理加密,就需要https
客户端如果通过https请求发送到服务器端,
服务器端收到请求,发送给客户端自己的证书,自己的公钥
客户端拿到证书后,用客户端上事先准备好的(给服务器颁发证书的CA的证书,因为服务器端是用CA私钥签名的,客户端是CA公钥,就可以解开),来解密 服务器发送过来的,得到公钥
用服务器的公钥来加密(用客户端生成的一个对称密钥,用key把服务器端的公钥进行加密,加密之后传给服务器端,
服务器端收到以后,拿自己的私钥解密,得到这个key(这样双方就有对称密钥了)
后续就可以用对称密钥传输了
访问一个错误页面有可能显示关于一些服务器的信息。不安全
(再centos6里面报错,还会显示一些错误信息,包括,,服务器的名字版本
status这个模块,作用是用来显示一些系统中的状态信息
查看是否已加载到系统
查看是否启用,,已经加载但是还未启用
打开主配置文件
查看是否有关于status模块的设置,如果没有,自己加
require host只允许这个网络的主机访问
第一行其实就是URL xxx/status
尝试访问看看有没有变化
服务器是进程第几代,进程生成后,慢慢会迭代更新,老的会kill掉
-代表等待的链接
w代表回应的链接
…表示现在没有对于的进程
就可以用status来判断你的服务器允许状态是否正常,配个后面的监控软件
来并发访问,测试服务器状态
出现变化
c代表正在关闭链接,w正在发送请求
还能看到谁在访问
不能被谁都访问,就需要设置权限
所谓虚拟主机就是在一个物理服务器上建立多个网站,现在想在一个服务器上搭建三个主页,需要各有各的主目录
先建立三个主目录
具体有三种方式实现
81端口对应a,82对应b,83对应c,每个端口对应独立一个网站
通过端口来区分不同网站,如果你不用80.就需要把系统中默认的80注释掉
打开三个端口,创建虚拟主机
查找创建虚拟主机的方法
transferlog 访问日志,可以分别设置、
自带对齐
现在没有解析DNS,只能通过ip地址访问
但是访问不到页面。查看原因
默认网站可以 ,81,82.83就不行
查看错误日志
把目录指定了,忘记加权限了,所以拒绝了
现在就可以了
原来网站也可以访问,相当于4个网站
但是一般很少根据端口来区分网站,更多的还是敲名字
第二种,用ip地址区分
添加地址
修改配置文件
就可以了。这就是基于ip地址
这样做只能靠ip访问
hots这一项没有起作用,什么时候起作用,那就是基于虚拟主机头的虚拟主机
虚拟主机的主机头就是靠host,host写不同名字,返回的地址就不一样,靠
配置文件中的severname区分
把之前加的ip地址删除,重新加载网卡就可以了
先不配置dns解析,直接配置host文件了
成功
host现在就不能随便写了,需要分别哪个是哪个文件
浏览器输入www.a.com,发送请求 报文的时候,报文头部就是www.a.com,服务器端看到a.com就返回a.com
系统就是用主机头。来判断用户是访问的哪个网站
但是如果通过ip访问,是访问的哪个网站
测试是否按照顺序
z真实按照顺序的
所以实现了虚拟主机后,谁排在前,谁就是默认网站,默认网站就是不通过名字访问,而是通过ip访问,加上之后,系统默认的/var/www/html也就失效了,我们看到的是第一个网页
centos6实现的时候有一点差别
需要取消注释才能支持虚拟主机,没有这一行就手动写
在生产中可以利用虚拟主机搭建测试环境