RHEL---http服务解读和搭建

RHEL---http服务解读和搭建_第1张图片

一、http服务解读

        一、什么是web服务器?

        Web服务器一般指网络服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。

        Web服务器可以看做是自助餐工作人员(计算机的程序),我们需要什么东西他们就会先看看你买没买票(即是否拥有访问权限),如果有,就会看你的请求,我们是要先看看有什么好吃的,还是直接要羊肉卷(即你的请求是要浏览网页,还是下载资源!)

        这里我们记住一句话:只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端

主要功能是提供网上信息浏览服务。

最主流的三个Web服务器是Apache、 Nginx 、IIS。(简单理解为比较火的自助餐:海底捞,好伦哥,星多伦海鲜)

Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。(为什么要运行脚本和程序呢?)

        因为服务器要处理用户的请求,比如你在百度搜索"新闻",计算机无法理解"新闻"这个字符的含义,于是发送到服务端,这时候服务端就会运行脚本和程序,匹配和"新闻"这个字符相关的一些内容然后发送给你.(简单来说脚本和程序就是处理用户请求的)

网络服务器:

        "可以代指硬件或软件,或者是它们协同工作的整体"

        1,硬件部分,存储了网络服务器软件以及网站的组成文件(HTML文档,图片,CSS样式表和JavaScript文件)的计算机

        2,软件部分,网络服务器包括控制网络用户如何访问托管文件的几个部分.

        二、使用的协议标准

应用层使用HTTP协议(超文本传输协议),服务器传输超文本到本地浏览器的传送协议。。 

HTTP基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)

HTTP是一个属于应用层的面向对象的协议

HTTP的工作环境也基于CS架构之上

HTML(标准通用标记语言下的一个应用)文档格式。

URL (统一资源定位器),主要作用是来传输数据和建立连接。

HTTPS(安全套接字层超文本传输协议)

        为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

        三、工作原理

这里写图片描述

首先我们暂不考虑HTTP协议的各种请求方式 ,假设浏览器作为客户端

(1)用户发起请求操作,可以是填写网址敲回车,也可以是点击链接,按键等,浏览器获取该事件。

(2)浏览器和对端服务器建立起TCP连接。

(3)浏览器讲用户事件按照HTTP协议格式打包为数据包(实质是等待发送缓冲区的一段有HTTP协议格式的字节流)。

(4)浏览器确认对端可写,并将数据包推入lnternet,该包经过网络递交到对端服务程序

 (5) 服务端程序拿到该数据包后,同样以HTTP协议格式解包,然后解析客户端的意图。
 (6) 得知客户端意图后,进行分类处理,或是提供某种文件、或是处理数据。
 (7) 将结果装入缓冲区,或是HTML文件、或是一张图片等。
 (8) 按照HTTP协议格式将(7)中的数据打包
 (9) 服务器确认对端可写,并将该数据包推入Internet,该包经过网络最终递交到客户端。
 (10) 浏览器拿到包后,以HTTP协议格式解包,然后解析数据,假设是HTML文件。
 (11) 浏览器将HTML文件展示在页面
 

总的来说服务器的原理无非是:

        1.接收数据

        2.发送数据

        3.数据处理

本质是:

        接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据

        四、web服务器的选择

        在UNⅨ和LINUX平台下使用最广泛的免费HTTP服务器是Apache和Nginx服务器

        而Windows平台NT/2000/2003使用ⅡS的WEB服务器。

        在选择使用WEB服务器应考虑的本身特性因素有:

                 性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等

        五、常用的web服务器

IIS         Kangle         WebSphere         WebLogic         Apache         Tomcat         Jboss

 Apache:

        Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中

        Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器

        主要兼容:LINUX系统,Windows系统

Tomcat:

        Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

        当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

其中Apache和Tomcat的区别:

        Apache是web服务器,Tomcat是应用(Java)服务器,它只是一个servlet容器,是Apache的扩展。Apache和Tomcat都可以作为独立的web服务器来运行,但是Apache不能解释Java程序(jsp,servlet)。

        两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及Java的,类似的有IBM的websphere、BEA的weblogic,sum的JRun等等。

        打个比方:Apache是一辆卡车,上面可以装载一些东西如HTML等。但不能装水,要装水必须要有容器,Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上

        当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat最新版本为10.0.23。

       静态网络服务器和动态网络服务器:

        静态网络服务器(static web server),或者堆栈,由一个计算机(硬件)和一个 HTTP 服务器(软件)组成。我们称它为“静态”是因为这个服务器把它托管文件的“保持原样”地传送到你的浏览器。

        动态网络服务器(dynamic web server)由一个静态的网络服务器加上额外的软件组成,最普遍的是一个应用服务器和一个数据库。我们称它为“动态”是因为这个应用服务器会在通过 HTTP 服务器把托管文件传送到你的浏览器之前会对这些托管文件进行更新。

        举个例子,要生成你在浏览器中看到的最终网页,应用服务器或许会用一个数据库中的内容填充一个 HTML 模板。网站像 MDN 或者维基百科 [Wikipedia] 有成千上万的网页,但是它们不是真正的 HTML 文档,它们只是少数的 HTML 模板以及一个巨大的数据库。这样的设置让它更快更简单地维护以及分发内容。

        请求响应信息,发给客户端进行处理,由浏览器进行解析,显示的页面称为静态页面
在网站设计中,纯粹HTML格式的网页(可以包含图片,视频js(前端功能实现),css(样式)等)通常被称为静态网页

        所谓的动态网页是与静态网页相对而言的,也就是说,动态网页的URL后缀不是 .html , .htm , .xml , .shtml, .js css 等静态网页的常见拓展名形式, 而是.asp, .aspx, .php, .js , .do , .cgi 等形式 请求响应信息,发给事务端进行处理完成,将信息返回给客户端,生成的页面称为动态页面
 

二、http服务搭建

        yum源的配置解释:

     1、什么是yum?

          yum 是软件管理仓库,可以完成安装,卸载(生产环境慎用),自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,并一次性安装所有依赖的相关软件包

          他最大的好处就是自动解决依赖关系,联网装包非常方便,他会把所有的依赖的软件都下载

          他在卸载的时候卸载的很清楚,依赖的所有软件都会卸载,所以在生产环境中少用yum卸载,建议使用  rpm -e --nodeps  去卸载软件包

      2、什么是挂载?

           在Windows下,mount挂载,就是给磁盘分区提供一个盘符(C,D,E,...)。比如插入U盘后系统自动分配给了它 I:盘符其实就是挂载,退优盘的时候进行安全弹出,其实就是卸载unmount。

           在Linux中只有一个根目录/。所以在装系统时,我们分配给linux的所有区都在/下的某个位置,比如/home等等

           mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。对该目录的操作就相当于对存储设备的操作。

           Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。在这里需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,只有在umount卸载以后才会恢复正常,而且只有目录才能被挂载,文件不可以被挂载,而如果挂载在非空目录下可能会导致系统异常,所以建议挂载在空目录下。

           

首先挂载 mnt
mount /dev/sr0 /mnt/

/dev/sr0是scsi控制器上的设备。

然后编辑 yum
vim /etc/yum.repos.d/base.repo

进去之后
编辑如下
[BaseOS]
name=baseos
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0

然后保存退出
:wq

开始安装软件包
dnf install httpd -y

修改默认配置 
vim /etc/httpd/conf/httpd.conf

进入之后
显示行号
:set number

查找ServaerName
修改为:
ServerName 0.0.0.0:80

意思是监听所有端口

编辑完成后保存退出
:wq

启动服务
systemctl start httpd

#放行防火墙规则或关闭防火墙
#firewall-cmd --permanent --add-service=http

#刷新防火墙
#firewall-cmd --reload

关闭防火墙(两种方法)
systemctl stop firewalld
service iptables stop


自定义欢迎界面
vim /var/www/html/index.html


如果在里面不写内容的话就会是Apache默认界面
或者简单一点
echo welcome to apache > /var/www/html/index.html
写入的内容是: welcome to apache

这里须知默认访问欢迎界面的配置文件是?
#/etc/httpd/conf.d/welcome.conf
欢迎界面的文件在哪?
#/usr/share/httpd/noindex/index.html

写完后保存退出即可
:wq

然后到浏览器中访问虚拟机的IP地址即可
这里不做演示,每个人的虚拟机地址都不同
如此便完成了无域名的网站

有域名搭建可看这位作者
http://t.csdn.cn/JloAV

RHEL---http服务解读和搭建_第2张图片

RHEL---http服务解读和搭建_第3张图片

三、http主配置文件解读

     (1)在这个配置文件当中,以#号开头的大多都是一些文本注释,解释信息较多,但是也有一些参数被注释掉,如果需要让其起作用,去掉#即可!
     (2)在这个配置文件未被注释掉的参数,有的参数是全局参数,有的是起局部作用的参数。

首先我们进入httpd主配置文件当中
vim /etc/httpd/conf/httpd.conf


#第一个配置信息告诉我们http服务是在/etc/httpd,在这个底下的文件都是为http服务的。
ServerRoot "/etc/httpd"     
#http服务的顶级目录为/etc/httpd

Listen 80     #监听在80端口,80为web服务器的默认端口
#监听就是响应外界连接,意为80端口与外界建立连接

Include conf.modules.d/*.conf
#包括/etc/httpd/conf.modules.d/*.conf的所有文件

User apache
#服务的用户

Group apache
#用户组

ServerAdmin root@localhost
#管理员的邮箱地址,方便管理员的管理

#ServerName www.example.com:80
#用来绑定某个IP的,否则在地址栏输入域名的时候不知道访问那个IP地址或域名,配置的时候记得配置域名解析

 #目录为根,<>为起始标志,为结束标志

    AllowOverride none 
#不允许这个目录下的访问控制文件来改变这里的配置,这也意味着不能查看这个目录下的访问控制文件。
    Require all denied 
#拒绝访问根

 
#和是一组标签,目录控制容器

DocumentRoot "/var/www/html"
#文本文件根目录(静态页面资源目录)

Options Indexes FollowSymLinks 
#索引,跟踪软链接

 
#加载一个目录模块
    DirectoryIndex index.html


 
#文件标签,匹配含有.ht字段的文件
    Require all denied
    #不能访问


ErrorLog "logs/error_log"
#存放错误日志的目录

LogLevel warn
#日志基本,警告


#日志配置模块 /var/log/httpd,日志模块:通过时间节点去记录(man date)
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{ Referer}i\" \"%{UserAgent}i\"" combined
#日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b" com mon


LogFormat "%h %l %u %t \"%r\" %>s %b \" %{Referer}i\" \"%{UserAgent}i\" %I %O" combi nedio


CustomLog "logs/access_log" combined
#访问日志目录


 #别名模块标签
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"




    AllowOverride None
    Options None
    Require all granted


   
#多用途互联网邮件扩展模块

AddDefaultCharset UTF-8    
#默认字符集

EnableSendfile on  
#启动发送文件 开启

IncludeOptional conf.d/*.conf   
#包含子配置文件,将apache中的conf-enabled中的配置文件包含进来

你可能感兴趣的:(RHCE,作业,http,服务器,网络)