计算机网路基础7--http web服务器搭建

4.3 http web服务器

web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务:向发出请求的浏览器提供文档的程序。最常用的Web服务器是Apache、Nginx和Microsoft的Internet信息服务器(Internet Information Services,IIS)

4.3.1 提供http web服务的应用程序

客户端:IE、火狐、Chrome等浏览器,属于http web服务的客户端应用程序
服务器端httpd – Apache开发的一款服务器端web服务应用程序。其他服务器端应用程序比如nginx、lighttpd、IIS等。

httpd、nginx只能处理静态页面(html),如需解析动态页面(jsp),可以通过反向代理将请求发送到后端的服务器完成动态页面处理,例如tomcat、IIS等。
tomcat擅长解析动态页面(JSP),tomcat本身也支持html,只是性能不如httpd。
流行的动态页面有:JSP、ASP、PHP、PERL等。
IIS:微软开发的服务器端http web服务应用程序。只支持windows系统,付费。
apache httpd、nginx:开源的,支持linux、windows等。
web服务器市场占有率统计:www.netcraft.com


4.3.2 httpd

1995开源社区发布Apache(a patchy server),后来发展状态成立了ASP(apache software foundation)。

1、httpd特性

  • 高度模块化:core + modules。需要用什么模块加载什么模块。
  • DSO: Dynamic Shared Object 动态加/卸载。
  • MPM:multi-processing module多路处理模块。 MPM有三种工作模式,不同模式对应了不同的web响应模型。

2、MPM工作模式小结
prefork模式:多进程I/O模型,每个进程响应一个请求,默认模型

一个主进程:生成和回收n个子进程,创建套接字,不响应请求;
多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个。

在这里插入图片描述

prefork模式

worker模式:复用的多进程I/O模型,多进程多线程,IIS使用此模型。

一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n。

在这里插入图片描述

worker模式

event模式:事件驱动模型(worker模型的变种)。

一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n,有专门的线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力。
event模式httpd-2.4才成为稳定版

在这里插入图片描述

event模式

处理请求中,进程角色切换模型

在这里插入图片描述

进程角色切换

3、httpd功能概述

  • 虚拟主机,一个主机可以创多个虚拟机,从而支持多个web网站。可以通过IP、Port、FQDN区分。

FQDN:(Fully Qualified Domain Name)完全限定域名:同时带有主机名和域名的名称。(通过符号“.”)例如:主机名是bigserver,域名是mycompany.com,那么FQDN就是bigserver.mycompany.com

-CGI:Common Gateway Interface,通用网关接口。

html网页动态内容,需要在服务器端执行脚本后返回执行结果,则需要CGI转换。

  • 反向代理:httpd服务器可以作为反向代理服务器(一个调度器),根据客户端请求类型,调度后台服务器完全请求处理。不是httpd擅长的,nginx性能更好。
  • 负载均衡:httpd不擅长,有这个功能。

4、httpd安装
使用使用centos7发行版自带的httpd版本rpm方式安装:yum install -y httpd。 如有特殊需求需要装指定版本,可采用编译方式安装。

rpm -q httpd:查看httpd是否已安装。
rpm -ql httpd:装完后,查看httpd的文件列表。
rpm -qi httpd:查询httpd的概要信息。
httpd -M:查看哪些模块已经被加载了,分为静态编译模块和动态加载模块,动态加载模块不需要重启即时生效。 查看静态编译模块:httpd -l
模块文件路径/etc/httpd/modules/usr/lib64/httpd/modules
动态加载的模块路径:/usr/lib64/httpd/modules

  • 启动服务service httpd start。启动服务后,查看端口监听ss -ntl,有80端口,说明服务启动了。

启动服务后,pstree -p| grep httpd查看系统中httpd服务进程,可以看到已经跑了8个worker进程和一个主进程,支持用户响应,占光了再生成新的进程。
ll /proc/进程id/fd可以查看这个进程打开了多少个文件。

在这里插入图片描述

httpd服务进程

  • httpd服务控制和启动配置

配置2、3、4、5模式开机服务是否启动:chkconfig httpd on|off;查看当前配置状态:chkconfig --list httpd
开机状态服务控制:service {start|stop|restart|status|configtest|reload} httpd

-站点网页文档根目录/var/www/html。在该目录下新建一个index.html文件,则在浏览器输入本机IP,就初始化创建了一个网站。

  • 服务脚本/etc/rc.d/init.d/httpd脚本配置文件/etc/sysconfig/httpd

http2.2通过/etc/sysconfig/httpd配置脚本,可切换MPM模式,重启服务生效。如下图切换为worker模式。Httpd2.4通过动态模块方式配置:/etc/httpd/conf.modules.d/00-mpm.conf,重启服务生效。
如下图切换为worker模式的进程树(pstree -p| grep httpd)。prefork是一个进程响应一个请求。而worker模式,一个master进程生成若干个子进程,一个子进程再生产若干个线程处理请求,
查看httpd进程:ps aux | grep httpd

httpd脚本切换worker模式
httpd脚本切换worker模式

worker_模式进程树
worker_模式进程树

  • 主程序文件: 对应MPM三种模式,默认/usr/sbin/httpdprefork模式。更改配置文件可切换MPM模式。

/usr/sbin/httpd – 默认主程序
/usr/sbin/httpd.worker。worker模式下的主程序。
/usr/sbin/httpd.event。event模式下的主程序。

  • 主进程文件cat /etc/httpd/run/httpd.pid查看httpd主进程编号

  • 日志文件目录/var/log/httpd

  • 帮助文档包:httpd-manual。本地安装帮助文档包方便在未联网状态下查看帮助。

  • 配置文件

主配置文件: /etc/httpd/conf/httpd.conf。个人配置不建议在主配置文件修改。
个人配置/etc/httpd/conf.d/对于个人的配置,建议在/etc/httpd/conf.d/目录下新增,只要是.conf结尾的就行。如果有Include conf.d/*.conf行,说明是支持这种操作的。
检查配置语法是否正确httpd -t

支持个人配置文件
支持个人配置文件


5、常见配置:/etc/httpd/conf/httpd.conf。PS:修改配置后重新加载服务生效service httpd reload
httpd配置文件的组成:directive value,类似于key-value对,一个配置项对应一个配置。directive不区分字符大小写,value为路径时,是否区分大小写,取决于文件系统

  • 配置端口监听: 格式-Listen [IP:]PORT,表示监听指定IP的指定端口,如果不指定IP,表示监听本机的所有端口。注意:Listen指令至少一个,可监听多个(即可定义多行Listen,监听多个端口)。

例如:Listen 80,监听本机所有IP的80端口。配置完成后,通过ss -ntl查看80端口是否处于监听状态。

  • 显示httpd版本信息grep "ServerTokens" /etc/httpd/conf/httpd.conf查看当前配置。

可设置为ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full一般设置为ServerTokens Prod隐藏具体的版本

  • 配置持久连接KeepAlive off|on。当一个请求三次握手建立连接后,是否请求完成,连接就马上断开。如果请求需要获取多个资源的场景很多,打开长连接效率较高。当然还可以配置最大连接时间KeepAliveTimeout和最大请求次数MaxKeepAliveRequests后断开连接。

测试:使用telnet测试httpd的开启和关闭长连接,获取资源的差异:yum install telnet

请求:telnet WEB_SERVER_IP PORT
头部信息:
GET /URL HTTP/1.1
Host: WEB_SERVER_IP

telnet 198.168.8.102 80  # 连接主机198.168.8.102的80端口。
  GET /index.html HTTP/1.1  
  host: 8.8.8.8  # 通过端口访问,host字段的值没用,随便填
...
  GET /test.html HTTP/1.1    
  host: 8.8.8.8  
  • 配置文档路径映射DocumentRoot /path。很重要,DocumentRoot指向的路径为URL路径的起始位置。例如:
DocumentRoot "/app/data“
"https://HOST:PORT/test/index.html"  --> /app/data/test/index.html
  • 定义站点主页DirectoryIndex index.html index.html.var

  • 访问|错误日志配置

错误日志目录:Errorlog logs/error_log。logs是配置的httpd root目录。
日志级别:LogLever warn
日志格式: LogFormat。配置中给定了多个日志格式对应的变量。需要的时候直接参考apache的帮助文档说明。

日志配置
日志配置


4.3.3 虚拟主机配置方法

默认一个主机上只有一个网站,即当前主机IP对应的网站。虚拟主机:即一个主机配置多个虚拟的主机,对应多个网站。不同主机通过唯一标识进行区分。有三种方式配置虚拟主机:

IP区分,PORT端口相同。
PORT区分,IP相同。
FQDN不同。请求报文首部。FQDN比较普遍的方法。


方法一:IP区分,建立三个虚拟主机

1、准备IP
按前述nmcli方法,在一个网卡上配三个IP:192.168.8.11,192.168.8.12,192.168.8.13

2、准备数据

  • 配置站点主页路径,假设在/app下创建三个目录,对应三个网站。mkdir website1;mkdir website2;mkdir website3;
  • 在各站点下创建各自的首页:echo "website1 Main page" > website1/index.htmlecho "website2 Main page" > website2/index.htmlecho "website3 Main page" > website3/index.html

3、配置虚拟主机配置项
注意,还是之前说的原则,在个人配置文件/etc/httpd/conf.d/目录下创建配置文件进行配置,假设创建的个人配置文件为my_vhost.conf参考主配置文件/etc/httpd/conf/httpd.conf配置虚拟主机的格式,一般在主配置文件末尾tail -f /etc/httpd/conf/httpd.conf。如果没有grep VirtualHost /etc/httpd/conf/httpd.conf
配置虚拟主机格式
配置虚拟主机格式

vim /etc/httpd/conf.d/my_vhost.conf;按下图示例配置虚拟主机:

IP区分方式配置三个虚拟主机示例
IP区分方式配置三个虚拟主机示例

配置完成后:重新加载服务service httpd reloadss -ntl,查看端口监听。
登陆其他主机使用curl命令测试三个网站是否可以访问:curl 192.168.8.11;curl 192.168.8.12;curl 192.168.8.13。默认都是80端口,所以不需要指定端口号。


方法二:端口区分,建立三个虚拟主机

很简单,方法一的配置基础上,在配置文件把IP改为*,增加端口,并增加端口监听即可,vim /etc/httpd/conf.d/my_vhost.conf,如下图所述:

端口区分方式配置三个虚拟主机
端口区分方式配置三个虚拟主机

修改完成后重新加载服务service httpd reloadss -ntl,查看端口监听。
登陆其他主机使用curl命令测试三个网站是否可以访问:curl 192.168.8.11:8001;curl 192.168.8.11:8002;curl 192.168.8.11:8003

实际生产环境中,不可能让用户输入不同的非默认端口号来区分访问不同的网站,更习惯用名字区分。所以FQDN方法应该更广泛。


方法三:FQDN区分,建立三个虚拟主机

1、首先,解决DNS问题: 搭建三个网站,比如:www.test1.com,唯一限定名/域名,域名需要DNS来解析,还要搭建DNS服务器。测试使用/etc/hosts模拟DNS解析,如下图,配置三个域名www.a.com,www.b.net,www.c.org

模拟配置DNS域名
模拟配置DNS域名

2、配置文件: 打开基于名称的虚拟主机开关,主配置文件默认是注释掉的:cat /etc/httpd/conf.d/my_vhost.conf |grep VirtualHost查看。

打开使用基于名称的虚拟主机开关
打开使用基于名称的虚拟主机开关
把这一行粘贴到个人配置文件中,并取消注释。FQDN区分,则不需要端口监听、不需要IP,要增加域名配置,最终配置如下图。

FQDN配置虚拟主机
FQDN配置虚拟主机

3、修改完成后重新加载服务service httpd reload,登陆其他主机使用curl命令测试三个网站是否可以访问:curl www.a.com;curl www.b.net;curl www.c.org

4、使用telnet测试不同主机名获取资源,注意,使用域名区分虚拟主机,这个时候请求头的host必须对应为确定的主机名了:

使用telnet测试host
使用telnet测试host

注意:FQDN,如果仍然按IP访问,则在配置文件中配置在最前面的是默认的访问网站


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux服务器配置与管理项目7 WWW服务器配置与管理 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第1页。 【项目描述】 公司为方便对外和对内发布信息,需要一台WWW服务器。WWW服务器的域名为www.zzrvtc.com,能够实现基本信息浏览,虚拟主机、个人主页、虚拟目录、权限控制、身份认证等功能。 本项目中我们来完成WWW服务器的配置与管理任务。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第2页。 【学习目标】 (1)了解WWW服务器在网络中的作用。 (2)掌握WWW服务器的安装过程。 (3)掌握各种WWW服务器功能的配置。 (4)掌握Web网站和虚拟主机的配置。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第3页。 预备知识 认识WWW服务器 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第4页。 1.WWW服务 WWW(World Wide Web,简称Web)服务是一种建立在超文本基础上的浏览、查询因特网信息的方式,它以交互方式查询并且访问存放于远程计算机的信息,为多种因特网浏览与检索访问提供一个单独一致的访问机制。Web页面将文本、超媒体、图形和声音结合在一起。因特网给企业带来通信与获取信息资源的便利条件。 WWW服务采用客户机/服务器结构,整理和存储各种WWW资源,并响应客户端软件的请求,把所需的信息资源通过浏览器传送给用户。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第5页。 1.WWW服务 WWW服务所用到的协议有超文本传输协议(Hypertext Transfer Protocol,HTTP)与超文本标记语言(Hypertext Markup language,HTML)。其中,HTTP是WWW服务使用的应用层协议,用于实现WWW客户机与WWW服务器之间的通信;HTML语言是WWW服务的信息组织形式,用于定义在WWW服务器中存储的信息格式。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第6页。 2.HTTP协议 HTTP(Hyper Text Transfer Protocol)超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议。HTTP是一个应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP 1.1,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第7页。 2.HTTP协议 HTTP协议采用客户端/服务端架构。浏览器作为HTTP客户端通过URL向HTTP服务端即Web服务器发送所有请求。Web服务器接收到请求后,向客户端发送响应信息。 如今的Web服务可以分为两种:静态Web服务和动态Web服务。其中动态Web服务更为流行。动态Web服务需要后台数据库服务器的支持。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第8页。 2.HTTP协议 我们以访问http://www.zzrvtc.com网站为例,其使用HTTP协议的工作流程如图所示。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第9页。 任务一 安装Apache服务器 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第10页。 任务提出 要想使WWW服务器顺利运行,首先需要安装好所需要的软件包。本次任务主要安装WWW服务器所需要的软件包Apache。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第11页。 任务分析 开放源代码的Apache(阿帕奇)是一个Web服务器软件,起初是由伊利诺伊大学香槟分校的国家超级计算机应用中心(NCSA)开发的,此后,Apache被开放源代码团体的成员不断地发展和加强。Apache服务器拥有牢靠、可信的美誉,可以在大多数计算机操作系统中运行,由于其多平台和安全性的特点被广泛使用,是最流行的Web服务器软件之一。 Linux服务器配置与管理项目7--WWW服务器配置与管理全文共87页,当前为第12页。 任务分析 Apache支持众多功能,这些功能绝大部分都是通过编译模块实现的。这些特性包括从服务器端的编程语言支持到身份认证方案。 一些通用的语言接口支持perl、python和PHP,流行的认证模块包括mod_access、rood_aut
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个两个四个三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值