Web服务器(理论篇)

一、Web服务器

1、www简介

Web网络服务也叫WWW(World Wide Web 全球信息广播)万维网服务,一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务

Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户,如图:

1.1 常见Web服务程序介绍:

        Windows系统中默认Web服务程序是I I S(Internet Information Services),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP、NMTP、SMTP等服务功能,但只能在Windows系统中使用
        2004 年 10 月 4 日,为俄罗斯知名门户站点而开发的 Web 服务程序 Nginx 横空出世。Nginx程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场,但Nginx 最被认可的还当是低系统资源占用、内存少且并发能力强,因此得到了国内诸如新浪、网易、腾讯等门户站的青
        Apache——取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源、跨平台(可运行于Unix,linux,windows中)
        Tomcat——属于轻量级的Web服务软件,一般用于开发和调试JSP代码,通常认为Tomcat是Apache的扩展程序


1.2 服务器主机

网站是由域名、网页源程序和主机空间组成的,其中主机空间则是用于存放网页源代码并能够将网页内容展示给用户,虽然本小节与Apache服务没有直接关系,但如果您想要在互联网中搭建网站并被顺利访问,主机空间一定不能选错


虚拟主机:在一台服务器中分出一定的磁盘空间供用户放置网站、存放数据等,仅提供基础的网站访问、数据存放与传输流量功能,能够极大的降低用户费用,也几乎不需要管理员维护除网站数据以外的服务,适合小型网站

VPS(Virtual Private Server):在一台服务器中利用OpenVZ、Xen或KVM等虚拟化技术模拟出多个“主机”,每个主机都有独立的IP地址、操作系统,实现不同VPS之间磁盘空间、内存、CPU资源、进程与系统配置间的完全隔离,管理员可自由使用分配到的主机中的所有资源,所以需要有一定的维护系统的能力,适合小型网站

云服务器(ECS):是一种整合了计算、存储、网络,能够做到弹性伸缩的计算服务,其使用起来与VPS几乎一样,但差别是云服务器建立在一组集群服务器中,每个服务器都会保存一个主机的镜像(备份),大大的提升了安全稳定性,另外还具备了灵活性与扩展性,用户只需按使用量付费的即可,适合大中小型网站。

独立服务器:这台服务器仅提供给您使用,详细来讲又可以区分为租用方式与托管方式

租用方式:用户只需将硬件配置要求告知IDC服务商,服务器硬件设备由机房负责维护,运维管理员一般需要自行安装相应的软件并部署网站服务,租期可以为月、季、年,减轻了用户初期对硬件设备的投入,适合大中型网站。
托管方式:用户需要自行购置服务器后交给IDC服务供应商的机房进行管理(缴纳管理服务费用),用户对服务器硬件配置有完全的控制权,自主性强,但需要自行维护、修理服务器硬件设备,适合大中型网站。
另外有必要提醒,选择主机空间供应商时请一定要注意看口碑,综合分析再决定购买,某些供应商会有限制功能、强制添加广告、隐藏扣费或强制扣费等恶劣行为,一定一定不要上当!

1.3 主要数据

服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式

1.4 浏览器

客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。
那么著名的浏览器就有内建在Windows操作系统内的IE浏览器(淘汰)和Microsoft Edge,还有Firefox浏览器和Google的chrome浏览器

2、网址及HTTP简介

web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在nginx中,这个目录默认在 /usr/share/nginx/html/ 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的

2.1 URL

Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址

  • 网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>**
  • 协议::http、https、ftp等
  • 主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了
  • 端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
    • 0-1023:永久地分配给固定的应用程序使用
    • 1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用
    • 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

2.2 http请求方法

在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。


**- 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

  • 1xx:指示信息 —— 表示请求已接收,继续处理
  • 2xx:成功 —— 表示请求已被成功接收、理解、接受
  • 3xx:重定向 —— 要完成请求必须进行更进一步的操作
  • 4xx:客户端错误 —— 请求有语法错误或请求无法实现
  • 5xx:服务器端错误 —— 服务器未能实现合法的请求

常见状态代码、状态描述的说明如下:

  • 200 OK:客户端请求成功
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
  • 500 Internal Server Error:服务器发生不可预期的错误
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

2.3 HTTP协议请求的工作流程:

  • 终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html
  • web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址
  • web浏览器将端口号(默认是80)从访问地址(URL)中解析出来
  • web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
  • 建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文。
  • web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文
  • web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上

3、www服务器的类型

静态网站:
仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,可以浏览网站,但是无法数据上传。


动态网站:
该站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过“网页程序语言”来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变。

另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计

搭建动态网站的需求:LAMP(Linux+Apache+MySQL+PHP)

                                    LNMP(Linux+Nginx+MySQL+PHP)

Apache主要提供www的服务器平台
MySQL:传统的文件读取是很麻烦的,如果只要读取该文件当中的一小部分,系统还是会将整个文件读出来,若多个用户同时读取同一个文件时,那就会造成效率与系统上的问题,所以才会有数据库系统的推出。数据库其实是一种特殊格式的文件,这种文件要通过特殊接口(数据库软件)来进行读写。由于这个特殊接口已经针对数据的查询、写入做过优化设计,因此很适合多人同时写入与查询工作。
PHP:PHP可以被用来建立动态网页,PHP程序代码可以直接在HTML网页当中嵌入,就像编辑HTML网页一样简单。PHP是一种“程序语言”,这种程序语言可以直接在网页当中编写,不需要经过编译即可执行。

 二、相关实验

[root@server ~]# dnf  install nginx  -y
[root@server ~]# nginx -v

[root@server ~]# rpm -ql nginx

[root@server ~]# tree /etc/nginx/

/etc/nginx/
├── conf.d
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types
├── mime.types.default
├── nginx.conf
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf
[root@server ~]#tree /usr/share/nginx/html  #默认nginx网站目录

[root@server ~]#tree /var/log/nginx/   #ngix日志文件所在目录

实验1:建立两个基于ip地址访问的网站:

#查看网关信息
[root@localhost ~]# nmcli connection show ens33 | grep gateway -i
connection.gateway-ping-timeout:        0
ipv4.gateway:                           --
ipv6.gateway:                           --
IP4.GATEWAY:                            192.168.84.2
IP6.GATEWAY:                            --

[root@localhost ~]# nmcli connection modify ens33 ipv4.address 192.168.84.151/24 ipv4.gateway 192.168.84.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
[root@localhost ~]# nmcli connection modify ens33 +ipv4.address 192.168.84.100/24
[root@localhost ~]# nmcli connection modify ens33 +ipv4.address 192.168.84.200/24
[root@localhost ~]# nmcli connection up ens33   ##重启网卡

#创建两个文件根目录,并定义网页内容
[root@localhost ~]# mkdir -pv /www/ip/{100,200}
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/ip'
mkdir: 已创建目录 '/www/ip/100'
mkdir: 已创建目录 '/www/ip/200'
[root@localhost ~]# echo this is 100 > /www/ip/100/index.html
[root@localhost ~]# echo this is 200 > /www/ip/200/index.html

#定义不同ip的访问网络的配置文件
[root@localhost ~]# vim /etc/nginx/abc.d/test.conf
server{
  listen 192.168.84.100;
  root /www/ip/100;
  location /{}
}

server{
  listen 192.168.84.200;
  root /www/ip/200;
  location /{}
}
#测试
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl 192.168.84.100
this is 100
[root@localhost ~]# curl 192.168.84.200
this is 200


实验2:建立两个基于不同端口访问的网站

  • 建立一个使用web服务器默认端口的网站,设置首页目录为www/port/80,网页内容为 the port is 80
  • 建立一个使用10000端口的网站,设置首页目录为www/port/10000,网页内容为 the port is 10000
#创建文件夹
[root@localhost ~]# mkdir -pv /www/port/{80,10000}
mkdir: 已创建目录 '/www/port'
mkdir: 已创建目录 '/www/port/80'
mkdir: 已创建目录 '/www/port/10000'

#添加页面内容
[root@localhost ~]# echo this port is 80 > /www/port/80/index.html
[root@localhost ~]# echo this port is 10000 > /www/port/10000/index.html


[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.84.150/24
[root@localhost ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)

#编辑配置文件
[root@localhost ~]# vim /etc/nginx/conf.d/test2.conf
server{ 
        listen 192.168.84.150:80;
        root /www/port/80;
        location /{}
}
server{
        listen 192.168.84.150:10000;
        root /www/port/10000;
        location / {}
}


#重启nginx
[root@localhost ~]# systemctl restart nginx
#测试
[root@localhost ~]# curl 192.168.84.150
this port is 80
[root@localhost ~]# curl 192.168.84.150:80
this port is 80
[root@localhost ~]# curl 192.168.84.150:10000
this port is 10000
[root@localhost ~]# 

windows上本地解析位置:

Linux本地解析位置:

  • /etc/hosts

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值