文章目录
-
目录
文章目录
前言
一.Web服务器概述
网址及HTTP协议概述:
HTTP协议请求过程:
二.搭建动态HTTP网页
动态网页概述:
搭建动态的HTTP协议网页:
总结
前言
通过上一个章节的学习了解了时间服务器以及远程连接服务器,上述两种服务器可能比较陌生,然而对于身处于互联网时代的我们,无时无刻不在接触互联网,提到互联网和我们息息相关的莫过于浏览器了,使用浏览器的同时必然绕不开Web服务器,什么是Web服务器呢,接下来让我们了解以下。
一.Web服务器概述
Web服务器是一种计算机程序,用于从Web浏览器接收HTTP请求并提供响应。它是在Web上发布和提供信息的必需组件之一。它可以是一台专用服务器或运行Web服务器软件的计算机。Web服务器主要有三种类型:Apache、Nginx和Microsoft Internet Information Services(IIS)。这些服务器软件可以在不同的操作系统上运行,如Windows、Linux、Unix等。
网址及HTTP协议概述:
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。
URL:
URL 是 Uniform Resource Locator(统一资源定位器)的缩写,用于指定一种网络上的资源,如网页或文件,以及访问该资源的方式。URL 通常包含以下信息:
- 协议(Protocol):指定访问该资源的协议,如 HTTP(80端口)、FTP、HTTPS(443端口) 等。
- 主机名(Host):指定资源所在的主机名或 IP 地址。
- 端口号(Port):指定用于访问该资源的端口号,如果没有指定端口号,则使用默认端口号。
- 路径(Path):指定资源在服务器上的路径,表示资源所在的目录或文件名。
- 查询参数(Query):向服务器传递额外的参数,通常用于指定要请求的资源或信息。
HTTP协议请求过程:
客户端在浏览器上输入URL(网址),浏览器根据URL上的主机地址(主机IP地址)寻找服务器,如果是主机名则需要先访问DNS服务器进行DNS解析,DNS服务器返回给给浏览器一个IP服务器IP地址,浏览器再根据此IP寻找服务器建立TCP连接。
当浏览器获得请求服务器的IP地址后,浏览器向服务器发起HTTP请求报文,Web服务器收到该请求后,会根据请求报文中的URL解析出程序端口,再根据端口查询到对应程序,该程序会向浏览器返回一个HTTP响应报文(包含'请求网页的html文件,该文件保存在LIinux服务器 的/var/www/html/index.html 文件中),浏览器收到该响应后解析HTTP响应报文中的html 文件,最终呈现出我们所看见的网页。
http请求方法:
在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
常见的状态码:
-
200 OK:客户端请求成功
-
400 Bad Request:客户端请求有语法错误,不能被服务器所理解
-
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
-
403 Forbidden:服务器收到请求,但是拒绝提供服务
-
404 Not Found:请求资源不存在,举个例子:输入了错误的URL
-
500 Internal Server Error:服务器发生不可预期的错误
-
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP报文格式:
HTTP请求报文:
HTTP响应报文:
二.搭建动态HTTP网页
动态网页概述:
使用lamp/lnmp架构
这种类型的网站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过“网页程序语言”来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变。
搭建动态的HTTP协议网页:
#安装Apache服务器软件
[root@localhost ~]# yum install httpd -y
#打开红帽软件管理器列出安装httpd所使用的文件
[root@localhost ~]# rpm -ql httpd
[root@localhost httpd]# tree /etc/httpd
- 关闭防火墙
[root@timeserver ~]# systemctl disable --now firewalld
- 关闭SElINUX
[root@timeserver ~]# vim /etc/selinux/config
#查看selinux 修改情况
[root@server html]# getenforce
- 启动Apache服务器httpd
[root@timeserver ~]# systemctl enable --now httpd
#查看httpd启动情况
[root@timeserver ~]# systemctl status httpd
#查看监听情况
[root@timeserver ~]# netstat -lntup
- 上传html文件
首先在桌面创建一个以html结尾的文件,用记事本打开,输入对应内容 以下图为例子:
保存后,切换到 /var/www/html/目录,通过Xftp 7将文件上传到该文件中
此时简单的web服务器搭建完成。可通过浏览器输入HTTP//:+服务器的IP 地址访问
实验2:建立两个基于ip地址访问的网站,要求如下
-
该网站ip地址的主机位为100,设置DocumentRoot为/www/ip/100,网页内容为:this is 100。
-
该网站ip地址主机位为200,设置DocumentRoot为/www/ip/200,网页内容为:this is 200。
1.配置网站的IP地址
#打开编辑器
[root@timeserver html]# nmtui
#查询虚拟机网关命令
#在虚拟机控制命令界面输入
[zt@timeserver ~]$ nmcli connection show ens160 | grep -i gateway
此时虚拟机IP地址变为 192.168.186.100/192.168.186.200
需要重新建立连接
2.创建目录
[root@timeserver html]# mkdir -pv /www/ip/{100,200}
#写入内容 this is 100 / this is 200 到对应文件中
[root@timeserver html]# echo 'this is 100' > /www/ip/100/index.html
3.配置虚拟主机
[root@timeserver ~]# vim /etc/httpd/conf.d/ip.conf
#编辑以下内容虚拟出两个网站
<virtualhost 192.168.186.100:80> #80代表端口号
servername 192.168.186.100 #代表服务器 IP地址
documentroot /www/ip/100
</virtualhost>
#上述内容代表:可通过IP 192.168.186.100 80端口号访问目录 /www/ip/100 的内容
~ <virtualhost 192.168.186.200:80> #80代表端口号
servername 192.168.186.200
documentroot /www/ip/200
</virtualhost> #设置允许规则<directory /www>
allowoverride none
require all granted
</directory>
实验3:建立两个基于不同端口访问的网站,要求如下:
-
建立一个使用web服务器默认端口的网站,设置DocumentRoo为/www/port/80,网页内容为:the port is 80。
-
建立一个使用10000端口的网站,设置DocumentRoot为/www/port/10000,网页内容为:the port is 10000。
#创建目录
[root@timeserver ~]# mkdir -pv /www/port/10000
#编辑文件
[root@timeserver ~]# vim /etc/httpd/conf.d/ip.conf
#添加以下内容到文件中
listen 10000
<virtualhost 192.168.186.100:10000>
servername 192.168.186.100
documentroot /www/port/10000
</virtualhost>#重启服务器
[root@timeserver 10000]# systemctl restart httpd
可通过浏览器输入HTTP//:+服务器的IP:+端口号地址访问
实验4:建立两个基于域名访问的网站,要求如下:
-
新建一个网站,域名为www.ceshi.com,设置DocumentRoot为/www/name,网页内容为this is test。
-
新建一个网站,域名为rhce.first.day,同时可通过ce.first.day访问,设置DocumentRoot为/www/ce,网页内容为:today is first day of class。
当客户端通过域名访问Web主机的时候,会优先查找本地解析文件
C盘 > windows > system32 > drivers > etc > hosts 使用 Visual Studio 打开
添加如下内容
实验5:基于虚拟目录和用户控制的web网站
Linux中,Web服务器的虚拟目录是指在Web服务器上创建一个或多个虚拟的目录,这些目录与物理路径不同,而是指向Web服务器上已有的某个目录。虚拟目录可以在URL上和物理路径上分别有不同的路径名称,以便在Web服务器上的多个站点中实现更好的隔离和管理。虚拟目录可以通过使用Web服务器的配置文件进行设置和管理。例如,在Apache服务器中,可以通过修改httpd.conf文件或通过.htaccess文件来配置设置虚拟目录。
#创建目录
[root@timeserver ~]mkdir /www/xuni
[root@timeserver ~]# echo xuni > /www/xuni/index.html
#编辑文件内容
[root@timeserver ~]# vim /etc/httpd/conf.d/ip.conf
#添加一条内容 alias /virtual /www/xuni <virtualhost 192.168.186.100:80> #80代表端口号
servername 192.168.186.100 #代表服务器 IP地址
alias /virtual /www/xuni
#代表访问/virtual时自动访问/www/xuni目录里的内容,服务器实际不存在/virtual这个目录
documentroot /www/ip/100 #代表网址
</virtualhost>
设置用户控制
#创建用户服务账号,并非服务账号类似于ACL列表
[root@timeserver ~]htpasswd -c(指定账户存入的文件) /etc/httpd/mima haha
#创建不会覆盖的用户服务账号
[root@timeserver ~]htpasswd /etc/httpd/mima haha
#设置该虚拟目录只有创建的服务账号可以查看
[root@timeserver ~]# vim /etc/httpd/conf.d/ip.conf
#编辑以下内容
<directory /www/xuni>
authtype basic #使用基本认证
authname "please login:" #设置一个登录提示
authuserfile /etc/httpd/mima #认证的文件
require user haha #允许的用户
</directory>