云计算day15

⼀、web基本概念和常识
Web:为⽤户提供的⼀种在互联⽹上浏览信息的服务,Web 服
务是动态的、可交
互的、跨平台的和图形化的。
Web 服务为⽤户提供各种互联⽹服务,这些服务包括信息浏览
服务,以及各种交互式服务,包括聊天、购物、学习等等内容。
Web 应⽤开发也经过了⼏代技术的不断发展,⽬前 Web 开发依
然是最重要的开发内容之⼀。Web 基础的技术包括超⽂本标记
语⾔(HTML)和 HTTP 协议,HTML 是⼀种呈现数据的⽅式
(给⼈看的),⽽ HTTP 则是⼀组通信的标准(语法、语义、
时许),可以简单的理解为 HTTP 携带 HTML。

  1. web 应⽤:⽹站(⼴义上的PC,⼿机app)
  2. 浏览器(Browser):也称⽤户代理,web客户端,主要有IE、
    Edge、Chrome、Firefox、腾讯浏览器,360浏览器等。
  3. web服务器(web server):也称HTTP服务器(HTTP
    server),主要有 Nginx、Apache、Tomcat 等。
    ⼆、⽹站基础1、域名
    域名是⼀个IP地址的"⾯具" ,⽬的是便于记忆和访问⼀个或⼀
    组服务器的地址(⽹站,电⼦邮件,FTP 等)。
    2、域名解析
    本地HOSTS解析
    DNS服务器解析
    3、⽹站的基本概念
    ⽹站、⽹⻚、主⻚;
    HTTP、URL、HTML、超链接
    4、web ⽹站
    web1.0(以编辑为特征)
    web2.0(侧重⽤户交互)
    5、动态⻚⾯与静态⻚⾯的差别(1)URL不同
    静态⻚⾯链接⾥没有"?"
    动态⻚⾯链接⾥包含"?"
    (2)后缀不同 (开发语⾔不同)
    静态⻚⾯⼀般以 .html .htm .xml 为后缀
    动态⻚⾯⼀般以 .php .jsp .py等为后缀(3)内容不同
    静态⻚⾯的内容是固定的
    动态⻚⾯的内容会因⽤户、浏览器、时间、地点等⽽发⽣变化。
    6、域名格式
    http://(协议头)www.bing.com(域名)/(URI资源:路径/⽂
    件名)
    示例:https://www.bilibili.com/v/game/?spm_id_from=333.85
    1.b_7072696d6172794368616e6e656c4d656e75.21
    三、HTTP 协议
    HTTP协议是超⽂本传输协议的缩写,英⽂是Hyper Text
    Transfer Protocol。它是从WEB服务器传输超⽂本标记语⾔
    (HTML) 到本地浏览器的传送协议。
    1、HTTP 原理
    HTTP是⼀个基于TCP/IP通信协议来传递数据的协议,传输的数
    据类型为HTML ⽂件,图⽚⽂件,查询结果等。
    HTTP协议⼀般⽤于B/S架构。浏览器作为HTTP客户端通过URL
    向HTTP服务端即web服务器发送所有请求,web服务器收到客
    户端请求后进⾏响应。2、HTTP 特点
  4. http协议⽀持客户端/服务端模式,也是⼀种请求/响应模式的协
    议。
  5. 简单快速:客户向服务器请求服务时,只需传送请求⽅法和路
    径。请求⽅法常⽤的有GET、HEAD、POST。
  6. 灵活:HTTP 允许传输任意类型的数据对象。传输的类型由
    Content-Type 加以标记。除开可以响应字符串之外,还可以上
    传和下载⼆进制⽂件
  7. ⽆连接:限制每次连接只处理⼀个请求。服务器处理完请求,并
    收到客户的应答后,即断开连接,但是却不利于客户端与服务器
    保持会话连接,为了弥补这种不⾜,产⽣了两项记录 http 状态
    的技术,⼀个叫做 Cookie,⼀个叫做 Session。
  8. ⽆状态:⽆状态是指协议对于事务处理没有记忆,后续处理需要
    前⾯的信息,则必须重传。
    3、URI 和 URL 的区别
    (1)HTTP使⽤统⼀资源标识符(Uniform Resource Identifiers,
    URI)来传输数据和建⽴连接。
    URI:Uniform Resource Identifier 统⼀资源标识符
    URL:Uniform Resource Location 统⼀资源定位符(2)URI 是⽤来标识⼀个具体的资源的,我们可以通过 URI 知道⼀
    个资源是什么,使⽤它就能够唯⼀地标记互联⽹上资源。
    (3)URL 则是⽤来定位具体的资源的,标识了⼀个具体的资源位
    置。互联⽹上的每个⽂件都有⼀个唯⼀的。
    (4)URL,也就是我们俗称的⽹址,它实际上是 URI 的⼀个⼦集。
    (5)URI 不仅包括 URL,还包括 URN(统⼀资源名称),它们之
    间的关系如下:
    4、HTTP 报⽂组成
    (1)客户端发出请求
    GET /index.php HTTP/1.5/ Host:zgod.cn**(2)客户端浏览器发送出来的请求格式:**
    GET:这个部分只声明了请求⽅式,除了get ⽅式可能还有 post
    等⽅式。GET 表示请求,POST 表示邮寄。
    /index.php:这⾥是⼀个URL,表示了我们要访问的资源是哪
    个。
    HTTP/1.5/:这⾥表示的是客户端浏览器使⽤的协议版本是1.5。
    Host:zgod.cn:这是请求是交给主机zgod.cn的。
    (3)服务器反馈的响应:
    (4)服务器反馈的响应报⽂的具体含义:
    HTTP/1.5:部分表示服务器回馈的对应http版本 (刚才客户端的
    请求⾥⾯带有版本号,对⽅使⽤的1.5,服务器回馈的也是1.5)
    200 ok:这⾥表示的是处理结果的状态码和状态的简单描述(ok)
    Date:Mon,5 sep 2022 08:49:45 GMT:响应的具体时间
    Content-Length:254:响应内容的⻓度
    Content-Type:text/html:响应内容的类型
    响应报⽂中打了⼀个空⾏(换⾏),当看到响应报⽂中有换⾏时,
    它的下⾯开始就是客户机要访问的具体资源了。5、HTTP 状态码
    2xx:成功,200成功、201已经创建
    3xx:重定向,304未修改
    4xx:请求错误,404未找到⽂件、408请求超时
    5xx:服务器错,500服务器内部错误、502⽹关错误
    6、HTTP 报⽂格式
    ⼀个完整的http访问包含请求(request)和响应(response)
    (1)请求报⽂
    客户端发出的报⽂:包含了请求⾏,请求头部字段,通⽤头部字
    段,实体头部字段及报⽂主体。
    请求⾏:客户端使⽤的请求⽅法,⽐如 GET,POST等等。同时
    也包含了URL信息和HTTP的版本号。
    请求头部字段:它包含了请求的符加信息,⽐如客户端的信息,
    响应的优先级等等。
    通⽤头部字段:是请求报⽂和响应报⽂都会使⽤的报⽂内容。实体头部字段:跟实体有关的资源信息,⽐如请求的实体更新时
    间等。
    报⽂主体:⼀般来所,请求报⽂在使⽤GET ⽅法时,没有报⽂
    主体,使⽤ POTS ⽅法时,就会有。
    (2)常⻅请求⽅法
    Ⅰ. 客户端向服务器提出请求的⽅法
  9. GET: 去向服务器获取资源。即请求指定的⻚⾯信息,并返回
    实体主体。1. POST:⽤来传输请求的实体主体。向指定资源提交数据进⾏处
    理请求。数据被包含在请求体中。POST请求可能会导致新的资
    源建⽴或已有资源修改。
  10. PUT:从客户端向服务器传送的数据取代指定的⽂档内容。
  11. HEAD:从服务器端获取报⽂⾸部信息,确定客户端输⼊的 URL
    有效性和资源的更新⽇期。类似于get请求,只不过返回的响应
    没有具体内容,只⽤于获取头部1. OPTIONS:⽤来询问服务器⽀持哪些⽅法。即获取服务器⽀持
    的请求⽅法
  12. DELETE:⽤来删除⽂件的。请求服务器删除指定的⻚⾯
    Ⅱ. 服务器回应报⽂7、HTTP协议缺点
    HTTP协议不会保存状态信息。
    ⽐如说:客户机对服务器说,请你把之前给我的响应再给我⼀次。
    那么这个时候服务器端是不会记录之前给了客户机什么东⻄的。它
    会说,我TM哪⼉记得之前给了你什么啊!?
    所以我们说HTTP是⽆状态协议。
    ⽆状态协议不会去保存任何的响应记录,所以服务器的CPU以及
    MEM等等资源的消耗上更⼩⼀些。
    试想,如果我们的服务器要去记录给每个客户机回馈了什么响应,
    是不是会消耗⾮常⼤的资源。
    我们说⽆状态协议也是有缺点的,虽然它节省了服务器端的资源,
    但是因为不能记录客户机的状态信息(⽐如某些站点的登录状态),会
    对⽤户造成不太⽅便的使⽤体验。
    那么由此⼀来,我们就要去说⼀说⼤家都听说过的⼀个技术,叫做
    cookie。 实际上COOKIE本身就是针对了HTTP⽆状态协议的弊端⽽
    出现的。
    它可以通过在请求和响应报⽂当中写⼊cookie 信息来控制/记录客户
    端的状态。⾸先,客户端对服务器发出访问请求,服务器会通过 cookie 技术在
    返回给客户端的报⽂当中加⼊⼀个叫做 set-cookie 的⾸部字段信
    息。告知客户端你要保存cookie。
    然后,客户端再次向服务器端发送访问请求的时候,客户端会在访
    问请求的报⽂当中加⼊它存储的 cookie。然后再发送。
    这个时候,服务器端在接收到请求之后,会检查客户端它发送的请
    求当中有没有夹着cookie值,再跟以前的记录进⾏⽐对,然后确认
    ⼀下发送请求的客户端是谁,它之前有什么状态。
    四、HTTPS 协议
    HTTP⼀般是明⽂传输,很容易被攻击者窃取重要信息,鉴于
    此,HTTPS应运⽽⽣。
    HTTPS 的全称为
    (HyperTextTransferProtocoloverSecureSocketLayer),
    HTTPS 和 HTTP 有很⼤的不同在于 HTTPS 是以安全为⽬标的
    HTTP通道,在HTTP 的基础上通过传输加密和身份认证保证了
    传输过程的安全性。
    HTTPS 在 HTTP 的基础上增加了 SSL 层,也就是说
    HTTPS=HTTP+SSL。
    HTTP使⽤明⽂传播,有三⼤⻛险(1)窃听⻛险(eavesdropping):第三⽅可以获知通信内容。
    (2)篡改⻛险(tampering):第三⽅可以修改通信内容。
    (3)冒充⻛险(pretending):第三⽅可以冒充他⼈身份参与通
    信。
    SSL/TLS协议是为了解决这三⼤⻛险⽽设计的,希望达到:
    (1)所有信息都是加密传播,第三⽅⽆法窃听。
    (2)具有校验机制,⼀旦被篡改,通信双⽅会⽴刻发现。
    (3)配备身份证书,防⽌⽌身份被冒充。
    1、SSL层
    SSL层(SecureSocketsLayer安全套接字协议),现在也被称为
    TLS。
    我们都知道SSL中的保证安全的加密通信是⼀次对称加密和⾮对称加
    密的结果,但是客户端与服务端建⽴通信的前提就是服务端是否能
    够被证书发型机构CA授予证书,那证书是怎么样的呢?
    以下是证书类型介绍:SSL:SecureSocketLayer,安全套接字层,http层下新增加的这
    ⼀层构成了https。
    TLS:TransportLayerSecurity,同样是为了保证数据安全的加
    密协议层,是SSL的增强版, SSL 有1.0,2.0,3.0版本,TLS
    ⽬前 1.0,1.1,1.2,1.3,TLS 的 1.0 版本就是 SSL 的 3.0。
    Key:https 中有公钥和私钥,⽤公钥加密的内容,可以使⽤私
    钥解密,反之亦然,不过我们平常所说的key⽂件是指私钥⽂
    件。
    CSR:CertificateSigningRequest 证书签名请求,⾥⾯包含公钥
    等个体信息,这个发给公证机构作为申请,通过这个公证机构颁
    发证书给你。
    CRT:certificate 证书⽂件,是证书机构颁发的保证安全通信的
    ⽂件,由域名、公司信息、序列号和签名信息等组成。
    CER:也是证书⽂件,和CRT相⽐只是缩写不同,CRT缩写常⻅
    于类uninx系统,CER缩写常⻅于 Windows 系统。
    X.509:这⾥特指颁发的证书的格式,⽽其根据不同的编码格式
    分为PEM和DER。
    a. PEM-PrivacyEnhancedMail,打开看⽂本格式,以"-----
    BEGIN "开头,"----- END"结尾,内容是 BASE64 编码。
    Apache 和 NGINX 服务器偏向于使⽤这种编码 格式,这种也是
    我们所常⻅的。
    b. DER-DistinguishedEncodingRules,打开是⼆进制格式,不
    可读。Java和Windows服务器偏向于使⽤这种编码格式。CA:CatificateAuthority证书颁发机构,它的作⽤就是给各个⽤
    户签发证书等,⽐如说 Symantec、Comodo、Godaddy、
    GolbalSign和Digicert等。
    openssl:相当于SSL的⼀个实现,如果把SSL规范看成OO中的
    接⼝,那么OpenSSL则认为是接⼝的实现,个⼈理解openssl是
    作为针对SSL/TLS的⼀个⼯具,包括对证书的解析,个⼈颁发,
    证书编码转化等。
    2、HTTPS 安全通信的四⼤原则
    (1)机密性
    就是对数据的加密,在传输数据的过程当中,如果被⼈劫持了数
    据,那么这个加密的数据对⽅不能轻易获得。
    (2)完整性
    是指数据在发送到接收的过程当中没有被篡改,从⽽接收到的数据
    是⼀个完整的数据内容。
    (3)身份认证
    数据传输的过程当中对于身份的验证,确认对⽅是传送数据过来的
    ⼈。可以解决冒充这样的⻛险。(4)不可否认性
    不能否认已经发⽣的⾏为。⽐如刚才举例双⽅借钱需要有借据并且
    签名按⼿印,如此⼀来就不能抵赖。
    3、通信原理
    (1)对称加密
    对称加密:通信双⽅都使⽤同⼀把密钥给报⽂进⾏加密和解密。
    (密码验证)
    对称加密具备速度快,性能⾼的特点。是HTTPS的最终采⽤的加密
    ⽅式。 对称加密的通信过程中双⽅都需要同样的密钥。
    (2)⾮对称加密
    ⾮对称加密:解决单项对称密钥的传输问题。就是加密和解密的
    双⽅使⽤不同的密钥。(密钥对验证)
    公钥, 是可以公开的。私钥,不能公开。
    公钥加密的内容只有私钥可以解密,私钥加密的内容只有公钥可
    以解密。
    (3)对称加密和⾮对称加密的综合版本
  13. 某⽹站拥有⽤于⾮对称加密的公钥A、私钥A。2. 浏览器向⽹站服务器请求,服务器把公钥A明⽂给传输浏览器。
  14. 浏览器随机⽣成⼀个⽤于对称加密的密钥X,⽤公钥A加密后传
    给服务器。
  15. 服务器拿到后⽤私钥A解密得到密钥X。
  16. 这样双⽅就都拥有密钥X了,且别⼈⽆法知道它。之后双⽅所有
    数据都通过密钥X加密解密即
    可。
    成功!HTTPS基本就是采⽤了这种⽅案。
    还有⼀个问题,公钥在传输过程中,也有可能被劫持替换,解决办
    法是数字证书。
    (3)CA
    认证机构,称为CA。服务端可以向CA申请认证证书,在证书上附加
    公钥信息,然后发布给客户端。服务端在申请证书的过程中,会提
    交⽐如DNS主机名等⽹站信息,CA会根据这些信息⽣成证书。
    (4)证书
    如此⼀来,客户端拿到证书之后,就可以获得证书上⾯我们附带的
    公钥,再⽤这个公钥加密'对称加密的密钥'传递给服务端。(5)数字签名
    证书的真假可以通过数字签名来验证。数字签名就相当于学历证书
    上的证书编号。
    jdk下载⻚⾯
    https://www.oracle.com/cn/java/technologies/downloads/
    https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.t
    ar.gz
    ⼀、Apache 概念
    1、概述
    最早的 web 服务程序,基于 http 协议提供⽹⻚浏览服务。
    2、特点
    模块化设置、开放源代码、跨平台应⽤、⽀持多种 web 编程语
    ⾔、运⾏稳定。
    3、⼯作模式
    (1)Prefork:使⽤进程处理请求,在该模式中⽐较消耗内存,但稳
    定性⾼,如某个进程出现问题,不会影响其他请求。
    (2)Worker:属于多进程模式,每个进程⽣成多个进程;在该模式下
    消耗的资源⽐较⼩,适合⾼并发请求,但稳定性没有 Prefork 模式稳
    定。
    (3)Event:该模式与 Worker 模式较为相似,不同之处在于在该模
    式下可以解决keepalive ⻓连接时占⽤线程资源导致浪费的问题。(4)keep-alive ⻓连接:TCP连接在发送后将仍然保持打开状态,
    于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为
    每个请求建⽴新连接所需的时间,还节约了带宽。实现⻓连接要客户
    端和服务端都⽀持⻓连接。
    ⼆、搭建 apache 服务器
    1、安装并设置防⽕墙序

    指令
    作⽤
    说明
    1
    yum -y install
    httpd
    安装httpd
    服务应⽤
    httpd服务和nginx服务都是使
    ⽤80端⼝
    2
    systemctl start
    httpd
    启动httpd
    服务
    如果有其他占⽤80端⼝的应
    ⽤需要停⽤
    3
    netstat -
    anpt|grep httpd
    查看端⼝使
    ⽤情况
    确认开启端⼝的是http服务以
    及端⼝号是多少
    4
    systemctl
    status firewalld
    检查防⽕墙
    是否打开
    如果防⽕墙没有打开,使⽤
    filewalld-cmd指令就会报错
    5
    filewall-cmd -
    add
    service=http
    防⽕墙开放
    http服务
    这个⽐开端⼝会好很多
    6
    filewall-cmd --
    list-all
    查看防⽕墙
    的所有规则
    发现ssh服务和http的服务都
    打开了
    7
    firewall-cmd --
    reload
    重载防⽕墙
    规则
    重载之后前⾯的设置才会⽣

root@server2 \~\]# yum -y install httpd 上次元数据过期检查:6:39:47 前,执⾏于 2023年08⽉31⽇ 星 期四 15时10分42秒。 依赖关系解决。 =================================================== ===========软件包 架构 版本 仓库 ⼤⼩ =================================================== =========== 安装: httpd x86_64 2.4.37- 51.module+el8.7.0+1059+126e9251 ......省略部分安装信息...... \[root@server2 \~\]# systemctl start httpd #启 动apache \[root@server2 \~\]# netstat -anpt \| grep httpd #查 看端⼝确认apache已启⽤ tcp6 0 0 :::80 :::\* LISTEN 3512/httpd \[root@server2 \~\]# systemctl status firewalld.service #查看防⽕墙是否启⽤,若启⽤则设置 apache服务可通⾏规则 ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service;\> Active: active (running) since Thu 2023-08-31 21:49:59 CST\> ......省略部分状态信息...... \[root@server2 \~\]# firewall-cmd --permanent --add service=http #设置防⽕墙放⾏apache success**2、apache 配置⽂件** yum 安装的 apache,配置⽂件在 /etc/httpd/conf/httpd.conf 如果是编译安装的 apache,那么配置⽂件在⾃⼰编译安装的安 装⽬录下 \[root@server2 \~\]# firewall-cmd --reload #重载防 ⽕墙规则 success \[root@server2 \~\]# firewall-cmd --list-all #查看当 前区域下防⽕墙所有规则 public (active) target: default icmp-block-inversion: no interfaces: ens32 ens34 ens35 sources: services: cockpit dhcpv6-client http ssh #apache(http)已放⾏ ports: 873/tcp protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:**序** **号** **指令** **作⽤** **说明** 1 vim /etc/httpd/conf/httd.conf 使⽤ vim⼯ 具编 辑 httpd 配置 ⽂件 没有安装vim,使⽤ yum安装,也可以下 载到window上使⽤记 事本修改,都可以, 注意要备份 2 Listen 80 找到 这 ⾏, 可以 设置 80端 ⼝ 80附近的端⼝不要随 便修改,使⽤1023之 后的端⼝ \[root@server2 \~\]# vim /etc/httpd/conf/httpd.conf 37 # Listen: Allows you to bind Apache to specific IP addresses and/or38 # ports, instead of the default. See also the \ 39 # directive. 40 # 41 # Change this to Listen on specific IP addresses as shown below to 42 # prevent Apache from glomming onto all bound IP addresses. 43 # 44 #Listen 12.34.56.78:80 45 Listen 80 #默认的httpd监听端⼝,可在下⾯添加其他⾃ 设端⼝ 46 47 # 48 # Dynamic Shared Object (DSO) Support ......省略部分内容 92 # ServerName gives the name and port that the server uses to identify itself. 93 # This can often be determined automatically, but we recom mend you specify 94 # it explicitly to prevent problems during startup. 95 # 96 # If your host doesn't have a registered DNS name, enter i ts IP address here. 97 #**3、apache 索引⽂件** 在⼀般的前段服务器中http nginx tomcat,在没有指定⽂件路径的时 候,默认先访问资源⽂件夹中的index.xxx ./html/index.html httpd 使⽤ yum 安装时,默认的站html⽂件在 /var/www/html/index.html,如果 index.html ⽂件不存在,需要 ⼿动创建 在⽹站⽅⾯,index通常是指主⽬录的意思,index.html是⽬录下 默认打开的⻚⾯。 ⽐如,⽹站的域名是www.abc.com,如果设置了 index.html 是 默认主⻚,那么打开 http://www.abc.com 和打开⻚⾯ http://ww w.abc.com/index.html 就是⼀样的。他们打开的都是⽹站⾸⻚, 因为index.html是⽹站默认的主⻚。 在 index.html 写⼊如下内容,可以让主⻚显示⼀个圆形,圆⼼处 显示⽂字"这就是主⻚" 98 ServerName www.example.com:80 #指定httpd服务域 名和该域名的端⼝,可以⼿动修改其他域名 99 100 # 101 # Deny access to the entirety of your server's filesystem. You must\[root@server2 \~\]# vim /var/www/html/index.html \ \ \ \ \ssjie's page\ \