文章目录
🛥️一、准备工作
- 本文所使用的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 测试一下网站是否搭建好,见证奇迹的时刻到了
我们可以看到,测试结果准确无误!!!