架构——2——HTTP协议及Apache

HTTP协议:超文本传输协议,Hyper Text transfer protocal(发明者:蒂姆.伯纳斯.李)

1、超文本

包含超链接(link)和各种多媒体元素的文本,这些超文本文件彼此相连,形成网状(web),因此又被称为网页(web page),这些链接使用URL表示,文本格式一般为HTML或HTM

2、HTTP协议版本:

  • HTTP 0.9
  • HTTP 1.0
  • HTTP 1.1 当前最流行,更多的请求方法,更精细的缓存控制,支持持久连接
  • HTTP 2.0

3、URL:统一资源定位符

格式:https://www.baidu.com/?tn=98010089_dg&ch=12

4、HTTP请求报文的方法

  • get 获得请求文件信息的数据内容(下载)
  • post 用户提交数据到服务器(上传)

5、HTTP返回状态码(status-code),由3位数字组成(***)

200请求成功
201上传文件成功
301永久重定向(redirect)
302,307临时重定向(redirect)
304浏览器缓存
403请求不到首页,没有权限
404请求的资源在前端查明不存在
405请求方法不支持
500服务器的内部错误,程序错误
502请求的资源前端有记录指向后端数据库,却找不到后端资源
503服务暂时不可用
504请求超时

6、HTTP的连接类型:

  • 短连接:建立一次tcp的连接,发起一次HTTP的请求,结束,tcp断开
  • 长连接:建立一次tcp的连接,发起多次HTTP的请求,结束,tcp断开

7、用户访问网站携带的参数,以及服务器返回的参数

1)General概况
Request URL: https://www.baidu.com/ #请求的URL地址
Request Method: GET #请求的方法(获取)
Status Code: 200 OK #成功状态码
Remote Address: [2408:80f0:410c:1d:0:ff:b07a:39af]:443 #请求的地址(ipv4或ipv6)
Referrer Policy: no-referrer-when-downgrade #降级不推荐(从https降级到http)

2)Request Headers:客户端请求头部信息
Accept: text/html #请求的类型
Accept-Encoding: gzip, deflate, br #是否进行压缩
Accept-Language: zh-CN,zh;q=0.9 #请求的语言
Connection: keep-alive #TCP长连接
cache-control:max-age=0 #缓存时间
Cookie: #客户端缓存,用户密码等网站信息
Host:www.baidu.com/ #请求的域名
Upgrade-Insecure-Requests: 1 #启用升级https访问
User-Agent: Mozilla/5.0 #客户端浏览器

3)Response Headers:服务器响应头部信息
Cache-Control: private #缓存类型非公开(公开:pubLic)
Connection: keep-alive #长连接
Content-Encoding: gzip #压缩格式gzip
Content-Type: text/html;charset=utf-8 #文档类型
Date: Sat, 14 Mar 2020 08:48:02 GMT #响应时间
Expires: Sat, 14 Mar 2020 08:47:42 GMT #失效时间
Server: BWS/1.1 #网站服务器软件
status:200 #状态码

8、HTTP统计术语:

PV:页面浏览量
UV:独立客户浏览量
IP:独立ip浏览量
例子:50人,每人通过手机和电脑访问同一网站各两次,全部都用公司宽带上网,会产生多少pv、uv、ip?

答案:200 100 1

9、HTTP协议原理和流程

1)用户输入用户名——>浏览器跳转——>app缓存——>DNS解析(递归查询|迭代查询)
2)由浏览器向服务器发起tcp连接(三次握手)
3)客户端发起HTTP请求:
请求的方法(获取)
请求的主机:域名
请求的资源类型(html)
请求的端口(80、443)
请求携带的参数(类型、压缩、认证等)
4)服务器的响应:
服务器的web软件
响应的文件类型
是否压缩
是否长连接
5)客户端向服务器发起tcp断开(四次握手)

10、用户访问网站流程:

1)客户端发起HTTP请求,抵达网站的前端防火墙
2)防火墙收到请求,分析判断是否符合规则,将合规流量通过tcp连接负载均衡器,传递用户HTTP请求
3)负载均衡器收到请求,根据内容和策略进行下发任务,通过tcp连接web服务器,转发用户的HTTP请求
4)web服务器收到用户的请求之后,解析请求内容:
静态请求:web服务器向nfs建立tcp连接,获取图片等静态文件,返回给负载均衡器
动态请求:由web服务器向后端的缓存或数据库建立tcp连接,将用户的动态请求传递给动态程序进行解析
5)由数据库->动态程序->缓存->web->负载均衡器->防火墙->用户

apache安装部署与工作模式

主流网站服务器软件:

  • Apache:时间较早,模块化设计,几乎可以运行在所有操作系统上,性能稳定;配置相对复杂,自身无法解析动态网页。
  • nginx:高性能、高并发的网站和反向代理服务器,也可做邮件代理,阿里再开发tengine应用于天猫和淘宝。
  • tomcat:java应用服务器,也是servlet容器,可以认为是Apache的扩展,可以独立运行,也可以和Apache合作。

Apache与nginx的区别:

  • nginx: 配置简洁、反向代理、负载均衡、静态数据处理能力是Apache3倍以上,消耗内存少。
  • Apache: 跨所有平台、支持通用网关接口(cgi)、支持多种动态网站语言(php,python,perl,java),模块组件比nginx多,运行稳定;配置复杂

Apache2.4版本

新特性:
1、MPM 支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能;
–enable-mpms-shared=all --with-mpm=event
2、支持 event
3、支持异步读写
4、在每个模块及每个目录上指定日志级别
5、增强版的表达式分析器
6、每请求配置:,
7、毫秒级别的 keepalive timeout
8、基于 FQDN 的虚拟主机不再需要 NameVirtualHost 指令
9、支持使用自定义变量

Apache安装步骤:

1、检查是否已安装rpm包httpd

rpm -q httpd			#查看是否安装
rpm -e httpd --nodeps			#卸载已安装的程序

2、安装前提软件

把软件复制到虚拟机的/usr/src目录下或直接下载到虚拟机

[root@apache ~]# cd /usr/src/
[root@apache src]# rz
apr-1.5.2.tar.gz  
apr-util-1.5.4.tar.gz  
httpd-2.4.25.tar.gz 
openssl-1.0.1u.tar.gz  
pcre-8.39.tar.gz  
zlib-1.2.8.tar.gz

如果编译安装无法执行,可能是开发软件工具没有安装,需要先安装开发软件:命令如下

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 

编写脚本安装前提软件:

[root@apache src]# mkdir /sh
[root@apache src]# cd /sh
[root@apache sh]# vim qianti.sh
#!/bin/bash
cd /usr/src
tar zxf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install

cd ..
tar zxf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install

cd ..
yum -y install zlib-*

tar zxf pcre-8.39.tar.gz
cd pcre-8.39
./configure --prefix=/usr/local/pcre && make && make install

cd ..
tar zxf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
./config -fPIC --prefix=/usr/local/openssl enable-shared && make && make install


[root@apache sh]# chmod +x /sh/qianti.sh 
[root@apache sh]# sh /sh/qianti.sh

3、安装Apache主程序

[root@apache sh]# vim httpd.sh
#!/bin/bash
cd /usr/src
tar zxf httpd-2.4.25.tar.gz
cd httpd-2.4.25
./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires --enable-deflate && make && make install


[root@apache sh]# chmod +x /sh/httpd.sh 
[root@apache sh]# sh /sh/httpd.sh

4、优化链接

[root@apache sh]# ln -s /usr/local/httpd/bin/* /usr/local/bin

添加系统服务

[root@apache sh]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@apache sh]# vim /etc/init.d/httpd
定位到第二行:修改为
# chkconfig: 35 85 15    		# 声明服务启动级别,开机启动顺序,关机关闭顺序
# description: apache 2.4.25		#服务声明,简要信息


[root@apache sh]# chkconfig --add httpd			#添加httpd到系统服务
[root@apache sh]# chkconfig httpd on	               #设置服务开机自启(等同于:systemctl enable httpd)
[root@apache sh]# systemctl start httpd		#开启服务(等同于:service httpd start)

5、查看httpd模块

httpd -V #查看版本和已装模块
httpd -l #只查看静态编译模块
httpd -M #查看所有模块

6、MPM(Multi Process Modules):多进程处理模块

负责实现网络监听、请求的处理等功能,目的为了在不同的平台上实现最优化的性能和稳定性。

操作系统平台MPM
BeOSbeos
NetWarempm_netware
OS/2mpm_os2
linuxprefork、worker、event
Windowsmpm_winnt

7、

  • prefork模式:非线程、预生成进程型MPM,一个子进程同一时间点仅能处理一个用户请求,根据并发请求数动态调整子进程
  • worker模式:线程化、多进程型MPM,每个进程可生成多个线程,每个线程处理一个请求,缺点:长连接,资源容易被占用
  • event模式:worker的改进版,使用监控线程处理长连接出现的资源占用问题

8、修改mpm配置文件

vim /usr/local/httpd/conf/extra/httpd-mpm.conf
<IfModule mpm_event_module>
StartServers 3 			#apache 启动时候默认开始的子进程数
MinSpareThreads 75		#最小空闲数量的工作线程
MaxSpareThreads 250		#最大空闲数量的工作线程
ThreadsPerChild 25			#每个子进程产生的线程数量
MaxRequestWorkers 400		#允许同时的最大接入请求数量
MaxConnectionsPerChild 10000	#每个子进程可处理的请求数
</IfModule>

9、使用ab命令进行压力测试

yum -y install httpd-tools
ab -c 160 -n 10000 http://192.168.1.102/index.html   		#使用ab压力测试命令进行160人并发访问,发出10000个请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值