• 【Linux篇<Day15>】——三分钟教会你如何搭建web网站



    在这里插入图片描述

    一份微语报,众览天下事!
    【今日要闻】
    腾讯35亿股权激励落地,人均收货50w
    【今日微语】
    当所有人都拿我当回事时
    我不能把自己当回事
    当所有人都不拿我当回事时
    我一定得瞧得上自己

    让我们进入今天的学习吧!
    💪Keep  trying💪

    在这里插入图片描述

    在这里插入图片描述

    🛥️一、准备工作

    • 本文所使用的server主机充当服务器,pc2主机充当客户机
    • server 配的IP地址为:192.168.88.240
    • pc2 配的IP地址为:192.168.88.2
    • 两台机器的防火墙建议关闭,SELinux设置为permissive模式

    ✈️二、独立web主机

    🍖2.1 web通信基本概念

    • 基于B/S(Browser/Server)架构的网页服务
    • 服务端提供网页,浏览器下载并显示网页
    • 超文本标记语言:Hyper Text Markup Language(HTML)
    • 超文本传输协议:Hyper Text Transfer Protocol(HTTP)

    🥩2.2 Linux中的Web服务

    • 软件包:httpd
    • 系统服务:httpd
    • 主配置文件:/etc/httpd/conf/httpd.conf
    • 提供的默认配置
      Listen:监听地址:端口(80)
      ServerName:本站点注册的NDS名称(空缺)
      DocumentRoot:网页根目录(/var/www/html)
      DirectoryIndex:起始页/首页文件名(index.html)

    🥓2.3 构建一个简单的web服务

    • 基于http的简单web
      我们先在 server 这台机器上安装httpd这个软件包,然后运行。在构建一个简单的web服务之前,我们先要知道,服务器到底是怎么显示网页内容的这就要讲上面的默认配置里面的 DocumentRoot 这个参数了,这个参数定义了,客户端在访问服务器的http服务时,服务器是如何将网页内容展示给客户端的。没错,就是这个DocumentRoot 参数规定了,默认将本机的 /var/www/html/ 目录下的 index.html 这个文件的内容展示出去。我们可以在server这台机器上编写一个index.html文件,内容为 wo shi web 。注意,我们必须把防火墙里面的public区域里面添加http服务或者直接把防火墙关闭掉,不然客户端无法访问。我们可以在 pc2 这台机器上测试,利用curl这个命令查看网站内容。
      关闭防火墙的命令:sytemctl stop firewalld
      在这里插入图片描述
    • 基于ftp的web服务
      基于ftp的web和http也比较类似,ftp服务是将本机的 /var/ftp/ 下面的所有内容进行共享,而不像http只局限于index.htmlz这个文件。注意用curl访问ftp服务时一定要加上ftp:// ,不然浏览器默认是 http 服务
      在这里插入图片描述

    🍣2.4 基于网页文件目录进行访问控制

    • 每一个目录都有对网页文件的访问控制权限。当子目录没有规则时,默认继承上一级的目录规则;如果针对此目录有了单独的配置,则不会继承上一级目录的规则
    • 在主配置文件 /etc/httpd/conf/httpd.conf 里面我们可以看到这两条
      在这里插入图片描述在这里插入图片描述
      这两条分别对根目录和 /var/www目录写了对应的规则,根目录拒绝所有的web访问/var/www 允许所有的web访问,所以我们写的网页文件文件尽量放到 /var/www 下面,我们也可以自己在配置文件里面定义规则也是可以的。

    🍟2.5 配置文件里的Listen

    • 端口:数字标号起到标识作用,标识协议
      http协议的默认端口号为80

    • listen是用来监听端口的,看http主配置文件里面,
      在这里插入图片描述
      这里的80端口,就是由httpd这个进程默认监听,每当要运行httpd服务时,服务器先找端口号,再由端口号找到这个进程,运行服务
      我们修改一下http的配置文件:我们让http这个进程多监听一个端口8080,也就是说,这两个端口都由http这个进程来进行服务,不管客户端访问哪个端口,都会有http出来服务。
      在这里插入图片描述
      然后我们在pc2上面测试一下网站是否正常
      在这里插入图片描述由上面的测试结果可以看到,我们不加端口号访问,默认端口就是80;我们加上80端口或者8080端口都可以正常访问,但是我们随意写的8888端口就无法访问。

    • 注意
      1、建议自定义的端口号大于1024 ,因为前1024很可能已经被系统占用了,端口号的极限为65535
      2、一个进程可以监听多个端口,但一个端口不能由多个进程来监听。就好像去理发,一号技师可以为很多人理发(一个进程可以为多个端口服务),但找一号技师时不能同时出来多个人(但找固定一个端口时,你不能出来多个进程)。

    🍝2.6 网络路径与实际路径

    • 一个客户端访问http网页的所有流程
      客户端通过流浪器向服务器发起请求,服务器接受请求,去寻找对应服务的端口号(80),端口号找到监视自己的进程(httpd),该进程再去访问自己的配置文件(/etc/httpd/conf/httpd.conf) ,在配置文件中找到 DocumentRoot 这个参数设置网页根目录,在这个根目录下面去寻找index.html文件,然后展示给客户端。
    • 这里假设我们的 DocumentRoot 定义的根目录就是 /var/www/html
      我们现在访问 crul http://192.168.88.240,会出现网页内容。
      而这条命令的网络路径是:crul http://192.168.88.240,实际路径是:/var/www/html/index.html。如果我们的网络路径是:crul http://192.168.88.240/abc/,对应的实际路径是:/var/www/html/abc/index.html。注意:图形浏览器会自动补全路径最后目录后面的 /,但是curl不会,所以需要自己补上。

    🚀三、虚拟web主机

    🍖3.1 为什么要发明虚拟web主机

      由上面的独立web主机我们可以很轻松的就搭建一个属于自己的web服务,但不知道各位有没有发现一个问题,上面的独立web主机所搭建的web服务,只能提供一个页面,这现实吗?作为一台服务器,要是只能提供一个网页,这也太浪费资源了。所以,当我们想要在一台主机上面搭建多页面的web服务时,就需要用到虚拟web主机的技术。就好像,我们要找独栋的楼房,我们可以通过地址直接定位到,这就好像我们的独立web主机,但当我们找到的是一栋大厦时,只有大厦的地址不足够我们找到对应的服务,我们还需要大厦的楼层和房间号才能精确地找到我们对应的服务,就如同我们接下来要学习的虚拟web主机。

    • 在这里插入图片描述

    在这里插入图片描述

    🥩3.2 虚拟web主机的含义及类型

    • 含义
      由同一台服务器提供多个不同的web站点
    • 类型
      基于域名的虚拟主机
      基于端口的虚拟主机
      基于IP地址的虚拟主机
      本文主要讲解基于域名和端口的虚拟web主机,基于IP地址的用的极少

    🥓3.3 基于域名的web虚拟主机

    🧀3.3.1 配置文件

    • 主配置文件
      /etc/httpd/conf/httpd.conf,由于主配置文件内容繁多且复杂,我们一般不对主配置文件做更改,在主配置文件的最后一行显示的是这样的内容:
      在这里插入图片描述
      意思就是 httpd 读完主配置文件,还会继续读取 /etc/httpd/conf.d/ 下的以 .conf 结尾的配置文件,而该配置文件我们可以随意改动,可以写一个属于自己的配置文件
    • 调用配置文件
      /etc/httpd/conf.d/ *.conf,该配置文件可以由我们随意取名,我们配置虚拟web主机只需要修改这个配置文件即可

    🍺3.3.2 配置虚拟站点

    • 格式
      在这里插入图片描述
      例如:我们编写以下配置文件,配置两个虚拟站点 www.qq.com 和www.wechat.com
      在这里插入图片描述
      在这里插入图片描述注意:IP地址处如果写 * 号,就代表能访问本机http服务的所有IP地址;中间的主要配置建议缩进两格,为了专业。
      然后我们创建qq和wechat这两个目录,在这个目录下面编写index.html,内容为 wo shi qq 和 wo shi wechat,然后用 pc2 访问以下看看结果
      在这里插入图片描述
      可以看到,当我们继续使用IP地址进行访问时,能成功访问网站内容,但是,网站内容并非我们刚刚写的wo shi qq,很明显,它显示的是我们在上面配置的简单web服务,而当我们使用我们定义的域名进行访问时,直接报了一个未知的错误,这是因为系统目前无法识别这个域名,这里就要涉及到另一个知识点,DNS解析了,但这里我们只是简单的提一下,下一篇再具体将DNS解析。

    🧁3.3.3 NDS域名解析

    • 当用户通过域名访问一个服务器时,其实并不是直接就去找服务器,因为电脑根本就不认识域名,只认识IP地址,所以这个请求是先通过NDS服务器进行域名解析,解析出对应的IP地址,然后再顺着这个IP地址去找对应的服务器。如下图所示:
      在这里插入图片描述
      所以,这里报错也很简单,就是因为这里客户机根本就不认识这个域名,无法解析,由于我们还没学习 NDS 域名解析,这里我们直接手动解析,具体方法是:在配置文件 /etc/hosts 中直接解析。这个文件做域名解析时有个特点,就是本机做域名解析,所以如果我们想要多台客户机访问网站,那就要每台客户机都做域名解析(当然实际应该场景我们不会这样做,实际都会用DNS域名解析)
      在这里插入图片描述做完上面的域名解析,电脑就认识了我们设置的站点,运行结果如下:
      在这里插入图片描述由此可见,我们成功搭建了一个多页面的网站。那我们再用IP地址访问一下看下是什么结果
      在这里插入图片描述从结果可以看出,这里不再显示 wo shi web 了,说明一旦使用了虚拟web主机,一切的网站都必须使用虚拟web进行呈现,之前的将不会被显示。如果在使用了虚拟web主机功能后继续使用IP地址进行访问,那么将呈现第一个虚拟web主机设置的内容,所以这里才显示我是 wo shi qq。

    🍣3.4 基于端口的虚拟web主机

    • 基于端口的虚拟web主机实际应用也比较少,实际上就是用同样的域名,不同的端口,来实现不同网站的展示。我们先配置下配置文件
      在这里插入图片描述这里我们直接该上面的配置文件,我们把域名都改成www.tencent.com,端口号分别为80 和8080,这样该之后,如果按端口进行访问的话,预期的结果应该是访问80端口出现 wo shi qq ,访问8080端口出现 wo shi wechat 。在测试之前我们有两个地方需要注意一下,
      第一个是因为我们改了域名,所以域名解析需要改一下 vim /etc/hosts:
      在这里插入图片描述第二个是由于我们需要80和8080两个端口都由httpd进行服务,所以在httpd的主配置文件 /etc/httpd/conf.d/httpd.conf 里面加上Listen 8080,让httpd同时监听8080这个端口。
      在这里插入图片描述
      然后我们用 pc2 测试一下网站是否搭建好,见证奇迹的时刻到了
      在这里插入图片描述我们可以看到,测试结果准确无误!!!


             👆回到顶部👆

    在这里插入图片描述

  • 相关阅读:
    创建虚拟python开发环境
    c++多源BFS
    安卓常见设计模式5------桥接模式(Kotlin版)
    使用 BERT 进行文本分类 (03/3)
    网络安全(黑客)技术——自学2024
    第五章 神经网络(上)
    多测师肖sir_高级金牌讲师_ui自动化po框架版本01
    arm push/pop/b/bl汇编指令
    数据结构与算法-队列
    Dubbo之属性设置。
  • 原文地址:https://blog.csdn.net/qq_41890240/article/details/124960631