精华内容
下载资源
问答
  • web服务器概念
    千次阅读
    2022-04-11 17:39:07

    WEB服务器端技术

    客户端是与用户交互的唯一接口,对于软件测试人员来说不可掉以轻心,那么服务器端又需要我们了解哪些技术呢?

    事实上,对于Web系统来说,相比于客户端技术,服务器端技术更是深不可测,其各类技术,系统架构,处理方式等千变万化。服务器端的技术进步,同样要求软件测试技术的同步前进,也更加要求软件测试人员能够跟上技术的步伐,否则测试将很难开展。

    虽然服务器端技术很复杂,作为测试人员,我们不能望而却步,否则我们的测试如何进步?本节就来为大家作一个整体的梳理,将服务器端的各类技术作一个总结:

    1. WWW简介

    WWW是World Wide Web(环球信息网)的缩写,也可以简称为Web,中文名字为“万维网”。它起源于1989年3月,由欧洲量子物理实验室 CERN(the European Laboratory for Particle Physics)所发展出来的主从结构分布式超媒体系统。通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料。 由于用户在通过 Web 浏览器访问信息资源的过程中,无需再关心一些技术性的细节,而且界面非常友好,因而 Web 在Internet 上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。

    长期以来,人们只是通过传统的媒体(如电视、报纸、杂志和广播等)获得信息。但随着计算机网络的发展,人们想要获取信息,已不再满足于传统媒体那种单方面传输和获取的方式,而希望有一种主观的选择性。现在,网络上提供各种类别的数据库系统,如文献期刊、产业信息、气象信息、论文检索等等。由于计算机网络的发展,信息的获取变得非常及时、迅速和便捷。

    到了1993年,WWW 的技术有了突破性的进展,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得 WWW 成为 Internet 上最为流行的信息传播方式。 现在,Web 服务器成为 Internet 上最大的计算机群,Web 文档之多、链接的网络之广,令人难以想象。可以说,Web 为 Internet 的普及迈出了开创性的一步,是近年来Internet 上取得的最激动人心的成就。

    WWW 采用的是客户/服务器结构,其作用是整理和储存各种WWW资源,并响应客户端软件的请求,把客户所需的资源传送到 Windows 95(或Windows98)、Windows NT、UNIX 或 Linux 等平台上。

    1. Web服务器

    Web服务器是离客户端最近的服务器端,主要作用包含三个方面:

    1. 监听客户端请求。为什么我们需要启动服务器,目的也就在于启动后服务器才可以开始监听80端口(或其它自定义端口),也才可以获取到客户端发来的请求,便于处理。
    2. 处理客户端请求。如果是静态资源(HTML页面或图片等),则直接将该资源从硬盘上读取进内存并直接返回给客户端;如果是动态页面(如PHP或ASP页面等),则将该请求转交给相应的脚本引擎来进行处理。
    3. 客户端与数据库之间的屏障。在三层架构中,Web服务器是夹在客户端与数据库之间,一方面用于从数据库中读取或写入数据,另外一方面也为了有效地过滤掉一些非法的访问请求,保障数据安全。

    当前比较流行的Web服务器有以下五种:

    1. Apache:由开源基金会Apache维护,开源系统软件,由C语言开发。是目前世界上最流行的Web服务器(没有之一)。由于C语言较好的跨平台特性,Apache已经在所有的服务器操作系统上实现,如Unix, Linux和Windows。并且很多应用服务器也直接内置Apache服务器,因为它性能好,足够稳定,并且功能很强大。
    2. IIS:Microsoft的Web服务器产品为Internet Information Server (IIS), IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在IIS的平台上。IIS提供了一个图形界面的管理工具,称为 Internet服务管理器,可用于监视配置和控制Internet服务。IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。
    3. Tomcat:由开源基金会Apache维护,主要处理以Java为架构的动态页面。比如我们常见的JSP页面和Java Servlet等,均可以由Tomcat处理,并且Tomcat还部分支持SUN公司的J2EE规范,为使用J2EE架构的中小型应用提供了方便。
    4. Lighttpd:是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题。实用起来lighttpd确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!lighttpd 适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。
    5. Nginx 是一个很牛的高性能Web和反向代理服务器,它具有很多非常优越的特性,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应。

    所谓的反向代理,我们可以这么理解:通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。

    1. 应用服务器

    Web服务器作为一个最接近于客户端的应用,有其重要作用,必不可少。但同时,现在的网络应用越来越广泛,相应的业务逻辑也越来越复杂,一个Web服务器恐难担此重任。特别是对于业务逻辑的处理和数据库访问这一部分,对性能的要求是非常高的,我们理所当然需要一套更强大的服务器体系来进行处理,这就是应用服务器。应用服务器比Web服务器更靠后端,其目的并非监听或处理HTTP请求,而是处理复杂系统的业务逻辑和数据库访问等。

    例如,设想一个在线商店(网站)提供实时定价(real-time pricing)和有效性(availability)信息。这个站点(site)很可能会提供一个表单(form)让你来选择产品。当你提交查询(query)后,网站会进行查找(lookup)并把结果内嵌在HTML页面中返回。网站可以有很多种方式来实现这种功能。我要介绍一个不使用应用程序服务器的情景和一个使用应用程序服务器的情景。观察一下这两中情景的不同会有助于你了解应用程序服务器的功能。

    1. 情景1:不带应用程序服务器的Web服务器

    在此种情景下,一个Web服务器独立提供在线商店的功能。Web服务器获得你的请求(request),然后发送给服务器端(server-side)可以处理请求(request)的程序。此程序从数据库或文本文件(flat file,译者注:flat file是指没有特殊格式的非二进制的文件,如properties和XML文件等)中查找定价信息。一旦找到,服务器端(server-side)程序把结果信息表示成(formulate)HTML形式,最后Web服务器把会它发送到你的Web浏览器。

     简而言之,Web服务器只是简单的通过响应(response)HTML页面来处理HTTP请求(request)。

    1. 情景2:带应用程序服务器的Web服务器

    情景2和情景1相同的是Web服务器还是把响应(response)的产生委托(delegates)给脚本(译者注:服务器端(server-side)程序)。然而,你可以把查找定价的商业逻辑(business logic)放到应用程序服务器上。由于这种变化,此脚本只是简单的调用应用程序服务器的查找服务(lookup service),而不是已经知道如何查找数据然后表示为(formulate)一个响应(response)。 这时当该脚本程序产生HTML响应(response)时就可以使用该服务的返回结果了。

    在此情景中,应用程序服务器提供(serves)了用于查询产品的定价信息的商业逻辑。(服务器的)这种功能(functionality)没有指出有关显示和客户端如何使用此信息的细节,相反客户端和应用程序服务器只是来回传送数据。当有客户端调用应用程序服务器的查找服务(lookup service)时,此服务只是简单的查找并返回结果给客户端。

    通过从响应产生(response-generating)HTML的代码中分离出来,在应用程序之中该定价(查找)逻辑的可重用性更强了。其他的客户端,例如收款机,也可以调用同样的服务(service)来作为一个店员给客户结帐。相反,在情景1中的定价查找服务是不可重用的,因为信息内嵌在HTML页中了。

    总而言之,在情景2的模型中,在Web服务器通过回应HTML页面来处理HTTP请求(request),而应用程序服务器则是通过处理定价和有效性(availability)请求(request)来提供应用程序逻辑的。

    现在,XML Web Services已经使应用程序服务器和Web服务器的界线混淆了。通过传送一个XML有效载荷(payload)给服务器,Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了。

    另外,现在大多数应用程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)。虽然应用程序服务器包含了Web服务器的功能,但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注:这种功能是指既有应用程序服务器的功能又有Web服务器的功能)。相反,如果需要,他们通常会把Web服务器独立配置,和应用程序服务器一前一后。这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了),分开配置(专门的Web服务器,集群(clustering)等等),而且给最佳产品的选取留有余地。

    常见的应用服务器有如下两类:

    1. J2EE应用服务器:

    由SUN公司(已被Oracle收购)主导的JAVA实现了三个平台:它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

    目前实现J2EE技术规范的产品有5个,分别是IBM公司的WebSphere,BEA公司(已被Oracle收购)的Weblogic,Redhat公司的JBoss(前身为开源社区开发),中国金蝶公司的Apusic,开源的Resin(由CAUCHO公司开发)。它们都是非常不错的J2EE应用服务器。

    IBM WebSphere:

    WebSphere Application Server 是 一 种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。 这一整套产品进行了扩展,以适应 Web 应用程序服务器的需要,范围从简单到高级直到企业级。

    WebSphere 针对以 Web 为中心的开发人员,他们都是在基本 HTTP服务器和 CGI 编程技术上成长起来的。IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸缩运行时环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。

    BEA WebLogic:

    BEA WebLogic Server 是一种多功能、基于标准的web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署所有关键性的任务,无论是集成各种系统和数据库,还是提交服务、跨 Internet 协作,起始点都是 BEA WebLogic Server。由于 它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发,基于 Internet 的企业都选择它来开发、部署最佳的应用。

    BEA WebLogic Server 在使应用服务器成为企业应用架构的基础方面继续处于领先地位。BEA WebLogic Server 为构建集成化的企业级应用提供了稳固的基础,它们以 Internet 的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。

    1. IIS: 首先IIS是Web服务器,其次微软公司也将其定义为.NET框架下的应用服务器。事实上微软从操作系统、服务器、数据库,再到解决方案,为IT业提供了一套相对完整的无缝集成的网络服务环境。如果我们说J2EE应用服务器是应用于JAVA平台的基础设施,那么IIS便是.NET平台的基础设施。所以,IIS完全有能力胜任应用服务器这一称呼。

    事实上,IIS不仅仅提供HTTP服务,还可以提供FTP, SMTP, 消息服务等。

    1. 脚本引擎

    我们都知道,现在的Web应用程序都是动态的,可交互的,可以根据用户输入的不同而返回不同的响应。而传统的HTML是无法支持动态网页的,因为HTML是静态的,由浏览器解析执行的。所以动态网页的处理都是在服务器端完成,由服务器端的脚本引擎处理完成后以标准的HTML格式返回给客户端。目前比较通用的脚本引擎有四种:

    1. ASP:Active Server Page,是微软IIS服务器的主要开发脚本,现在已经升级到ASP.NET,是微软.NET框架的一部分。传统的ASP页面主要使用VBScript脚本作为程序语言,再内置ASP服务器组件共同构成服务器端脚本引擎。而最新版本的ASP.NET则可以使用VBScript或JScript(注意与Javascript区别),并且与C#或VB.NET一起组成强大的服务器端开发环境。
    2. PHP:PHP 的简称原本为 Personal Home Page,后来更名为Hypertext Preprocessor,意为超文本预处理语言。是当前开源项目使用最多的脚本引擎,在sourceforge.net网站上我们可以找到很多流行的开源项目,如果该项目是以Web站点形式存在的,绝大部分都使用PHP开发。同时,PHP也同样适用于架构一些大型的应用,比如新浪网站。同时,PHP与MySQL,Apache及Linux的无缝集成,也催生了LAMP这一伟大的开源服务器平台。
    3. JSP: Java Server Page,是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
    4. RUBY:Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java 平台)、IronRuby(.NET 平台)等其他平台的 Ruby 语言替代品。
    1. 集群环境

    服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就象是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度(Load Balance – 负载均衡),也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行(Fail Over – 故障转移)。

    集群环境有多种实现方式:

    1. 硬件集群:直接使用硬件来完成,如知名的redware,可直接根据来访者的IP地址进行负载的分配与转移,并实时监听各集群节点,达到故障转移的目的。
    2. 操作系统集群:操作系统之间直接集群,属于软件级集群,通过集群分配算法实现。
    3. 应用服务器集群:应用服务器之间直接集群,根据应用服务器之间的性能指标进行负载的均衡和故障转移。
    4. 数据库集群:数据库系统直接集群,如Oracle RAC。

    其实无论何种集群方式,其核心目的就是实现负载均衡和故障转移。要实现该目的,必须要有一个负载分发器来作为系统的访问入口,当该负载分发器检测到有请求过来的时候,可根据集群节点的性能状况来决定由哪个集群节点来进行处理。同时,该负载分发器需要实时检测集群节点的健康状态,如果发现有节点无法提供服务时,将不再为其分配请求,并且及时发出警告通知系统管理员,这样就可以实现故障转移。所以说原理是很简单的,企业也完全可以自主开发软件来实现集群,只不过如何实现高可用性(High Availability)是一个比较复杂的问题,一些简单的算法可能很难保证其高负载情况下的稳定处理。

    1. 数据库

    我们每天都生活在数据库的世界,甚至都说不清楚是我们在控制数据库,还是被数据库控制。不妨来看看人们每天所做的哪些事情是跟数据库相关的:公交系统刷卡,上班打卡,银行取钱,超市消费,手机充值,天气查询,新闻阅读,户口信息,子女学籍……。

    目前数据库的类型及存在形式主要有以下四种:

    1. 文件型数据库:将数据保存在文件中,比如一个CSV的逗号分隔符文件,Excel文件,或者比较流行的XML(Extensible Markup Language - 可扩展标记语言)文件,它们都是用来描述数据的,并且由于它们都是以纯文本形式保存,其通用性和可移植性非常好,但是不太适用于大型的应用。
    2. 关系型数据库:将数据以二维表的形式保存,并且建立表与表或者列与列的各种关系,便于进行业务逻辑处理和数据展现。这也是近二十年来使用最为广泛的数据组织形式,在大型应用中显示出了巨大的优势。

    事实上,关系型数据库的数据本质上仍然保存在硬盘中,数据库管理系统只在需要时将数据文件从硬盘读取到内存中并提供给用户。当今最流行的5大数据库管理系统均为关系型数据库,如Oracle, SQLServer, MySQL, DB2, Informix。

    1. 内存型数据库:我们知道,硬盘的读写速度远慢于内存,笔者电脑上的硬盘(7200转)读写速度为80M/S左右,而内存(DDR3 1066MHz)的读写速度为6G/S,其速度相差接近80倍。即使现在的固态硬盘或者RAID 0磁盘阵列,其读写速度也就200M/S左右,仍然无法与内存的速度相提并论。于是,科学家们提出了内存型数据库,也就是将所有数据库文件全部置于内存中,这样可大大提高数据库处理速度。

    现在已经有很多数据库产品已经实现了内存数据库。比如Oracle的内存型数据库Times Ten,MySQL的MEMORY内存引擎,MemCached数据库产品等。当然,我们也需要注意到,使用这一类数据库对于系统稳定性有非常高的要求,因为内存中的数据一旦断电,将全部丢失。

    1. NoSQL:not only SQL,指的是非关系型的数据库。随着互联网Web 2.0网站的兴起,传统的关系数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL 数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。目前实现NoSQL的产品也很丰富,如Google 的BigTable与Amazon的Dynamo是非常成功的商业 NoSQL 实现。一些开源的 NoSQL 体系,如Facebook 的Cassandra, Apache 的HBase,也得到了广泛认同。从这些NoSQL项目的名字上看不出什么相同之处:Hadoop、Voldemort、Dynomite,还有其它很多。
    1. SOA

    Service-Oriented Architecture,指面向服务的体系架构。其核心在于“服务”。要了解SOA,必须首先理解什么叫Web Service (Web服务),Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。Web Service利用SOAP协议(Simple Object Access Protocol – 简单对象访问协议)和XML进行数据传输。SOAP协议又是依附于HTTP协议进行传输的,这些协议都是语言无关,平台无关的协议,所以利用Web Service,我们可以很轻易地在异构系统之间进行数据传递。

    SOA便是以Web服务为核心进行应用系统架构设计的一种全新技术,使得系统数据可以在任何平台下实现访问。

    1.  SaaS

    Software-as-a-Service,软件即服务。是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service provider(ASP,应用服务提供商),hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。

    1. 云计算

    云计算概念是由Google提出的,这是一个美丽的网络应用模式。狭义云计算是指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的资源;广义云计算是指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务,它具有超大规模、虚拟化、可靠安全等独特功效;

    云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的完美系统,并借助SaaS、PaaS、IaaS、MSP等先进的商业模式把这强大的计算能力分布到终端用户手中。Cloud Computing的一个核心理念就是通过不断提高“云”的处理能力,进而减少用户终端的处理负担,最终使用户终端简化成一个单纯的输入输出设备,并能按需享受“云”的强大计算处理能力!

    云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。

    注:

      1. SaaS:Software-as-a-Service,软件即服务,主要以提供软件服务为核心。
      2. IaaS:Infrastructure-as-a- Servic,基础设施即服务。消费者通过Internet可以从完善的计算机基础设施获得服务。
      3. PaaS:Platform-as-a- Service,平台即服务,是指将软件研发的平台作为一种服务,以SaaS的模式提交给用户。
      4. MSP:Management Service Provider,管理服务提供商,最古老的云计算运用之一。这种应用更多的是面向IT行业而不是终端用户,常用于邮件病毒扫描、程序监控等等。

    云计算的特点:

    1. 数据安全可靠:

    首先,云计算提供了最可靠、最安全的数据存储中心,用户不用再担心数据丢失、病毒入侵等麻烦。

    很多人觉得数据只有保存在自己看得见、摸得着的电脑里才最安全,其实不然。你的电脑可能会因为自己不小心而被损坏,或者被病毒攻击,导致硬盘上的数据无法恢复,而有机会接触你的电脑的不法之徒则可能利用各种机会窃取你的数据。

    反之,当你的文档保存在类似 Google Docs 的网络服务上,当你把自己的照片上传到类似 Google Picasa Web的网络相册里,你就再也不用担心数据的丢失或损坏。因为在“云”的另一端,有全世界最专业的团队来帮你管理信息,有全世界最先进的数据中心来帮你保存数据。同时,严格的权限管理策略可以帮助你放心地与你指定的人共享数据。这样,你不用花钱就可以享受到最好、最安全的服务,甚至比在银行里存钱还方便。

    1. 客户端需求低

    其次,云计算对用户端的设备要求最低,使用起来也最方便。

    大家都有过维护个人电脑上种类繁多的应用软件的经历。为了使用某个最新的操作系统,或使用某个软件的最新版本,我们必须不断升级自己的电脑硬件。为了打开朋友发来的某种格式的文档,我们不得不疯狂寻找并下载某个应用软件。

    为了防止在下载时引入病毒,我们不得不反复安装杀毒和防火墙软件。所有这些麻烦事加在一起,对于一个刚刚接触计算机、刚刚接触网络的新手来说不啻一场噩梦!如果你再也无法忍受这样的电脑使用体验,云计算也许是你的最好选择。你只要有一台可以上网的电脑,有一个你喜欢的浏览器,你要做的就是在浏览器中键入 URL ,然后尽情享受云计算带给你的无限乐趣。   你可以在浏览器中直接编辑存储在“云”的另一端的文档,你可以随时与朋友分享信息,再也不用担心你的软件是否是最新版本,再也不用为软件或文档染上病毒而发愁。因为在“云”的另一端,有专业的 IT 人员帮你维护硬件,帮你安装和升级软件,帮你防范病毒和各类网络攻击,帮你做你以前在个人电脑上所做的一切。

    1. 轻松共享数据

    此外,云计算可以轻松实现不同设备间的数据与应用共享。

    大家不妨回想一下,你自己的联系人信息是如何保存的。一个最常见的情形是,你的手机里存储了几百个联系人的电话号码,你的个人电脑或笔记本电脑里则存储了几百个电子邮件地址。为了方便在出差时发邮件,你不得不在个人电脑和笔记本电脑之间定期同步联系人信息。买了新的手机后,你不得不在旧手机和新手机之间同步电话号码。

    对了,还有你的 PDA 以及你办公室里的电脑。考虑到不同设备的数据同步方法种类繁多,操作复杂,要在这许多不同的设备之间保存和维护最新的一份联系人信息,你必须为此付出难以计数的时间和精力。这时,你需要用云计算来让一切都变得更简单。在云计算的网络应用模式中,数据只有一份,保存在“云”的另一端,你的所有电子设备只需要连接互联网,就可以同时访问和使用同一份数据。

    仍然以联系人信息的管理为例,当你使用网络服务来管理所有联系人的信息后,你可以在任何地方用任何一台电脑找到某个朋友的电子邮件地址,可以在任何一部手机上直接拨通朋友的电话号码,也可以把某个联系人的电子名片快速分享给好几个朋友。当然,这一切都是在严格的安全管理机制下进行的,只有对数据拥有访问权限的人,才可以使用或与他人分享这份数据。

    1. 无限可能

    为存储和管理数据提供了几乎无限多的空间,也为我们完成各类应用提供了几乎无限强大的计算能力。想像一下,当你驾车出游的时候,只要用手机连入网络,就可以直接看到自己所在地区的卫星地图和实时的交通状况,可以快速查询自己预设的行车路线,可以请网络上的好友推荐附近最好的景区和餐馆,可以快速预订目的地的宾馆,还可以把自己刚刚拍摄的照片或视频剪辑分享给远方的亲友……

    离开了云计算,单单使用个人电脑或手机上的客户端应用,我们是无法享受这些便捷的。个人电脑或其他电子设备不可能提供无限量的存储空间和计算能力,但在“云”的另一端,由数千台、数万台甚至更多服务器组成的庞大的集群却可以轻易地做到这一点。个人和单个设备的能力是有限的,但云计算的潜力却几乎是无限的。当你把最常用的数据和最重要的功能都放在“云”上时,我们相信,你对电脑、应用软件乃至网络的认识会有翻天覆地的变化,你的生活也会因此而改变。

    互联网的精神实质是自由、平等和分享。作为一种最能体现互联网精神的计算模型,云计算必将在不远的将来展示出强大的生命力,并将从多个方面改变我们的工作和生活。无论是普通网络用户,还是企业员工,无论是IT管理者,还是软件开发测试人员,他们都能亲身体验到这种改变。

    1.     物联网

    物联网是新一代信息技术的重要组成部分。物联网的英文名称叫“The Internet of Things”。顾名思义,物联网就是“物物相连的互联网”。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物体与物体之间,进行信息交换和通信。

    因此,物联网的定义是:通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物体与互联网相连接,进行信息交换和通信,以实现对物体的智能化识别、定位、跟踪、监控和管理的一种网络。

    更多相关内容
  • web服务器、应用服务器和常见的服务器概念

    千次阅读 多人点赞 2020-04-17 16:36:01
    什么是web服务器,什么是应用服务器? 浏览器的编译原理是什么? http的头文件为何要这样配置? Nginx,Apache等为何要这样操作? 不同的服务器软件有什么作用? 而网上关于http的实战讲解一般都是以操作为主,涉及...

    http协议解析–绪篇

    在做开发的过程中,总是能感觉到自己对http相关的各种概念模糊不清。

    什么是web服务器,什么是应用服务器?

    浏览器的编译原理是什么?

    http的头文件为何要这样配置?

    Nginx,Apache等为何要这样操作?

    不同的服务器软件有什么作用?

    而网上关于http的实战讲解一般都是以操作为主,涉及到原理的部分大多模糊不清,自己又很少花时间去系统的学习http协议相关的内容,大多数时候都是照着配一配就行了,所以明明写了挺多代码了,对于http还是知之甚少。所以,决定写一个专题,留作笔记也以此来督促自己深入的看看http,后续有什么地方说错了,也欢迎大家指出。
    在这里插入图片描述


    热点问题

    在之前的学习中,曾经困扰我许久的问题便是:web服务器,http服务器,服务器软件,网站后台,应用服务器这些都有什么区别,与Apache,Nginx究竟是什么关系,Tomcat又是什么?

    在绪篇中首先便先讲一下这些容易混淆的概念性问题。

    web服务器

    一般我们把发出http请求的一方称作请求分,比如浏览器就是http的请求方,那么应答方就是我们常说的web服务器(web Server)。

    应该说web服务器在某些时候是一种很广泛的概念,比如在web代表一项应用软件是,web服务器有时候会被理解为软化的后台,也正是因为这样,很多人会混淆这个概念。

    在硬件层面上,web服务器可以简单的理解为另一台性能更好的主机。不过在现实生活中,不仅仅只是一台主机,而是利用反向代理、负载均衡等等技术组成的一大群机房。

    在软件层面上指的是提供web服务的应用程序。我的理解就是响应http请求,返回超文本文件等数据,或者把请求转发给后面的Tomcat、node.js等应用服务器。因此,web服务器是静态服务器。

    常见的web服务器有Apache,Nginx,Tomcat等,其实Tomcat更多的做为应用服务器使用,一般不会直接用Tomcat做web服务器。

    在这里插入图片描述

    在这里插入图片描述
    当然目前Nginx等也经常用来做反向代理服务器和负载均衡等

    http服务器

    http服务器就是指使用http协议传输资源提供服务,由于应用层通讯协议主要就是http协议,所以在普遍情况下,web服务器==http服务器

    网站后台

    可以提供数据接口等服务的应用层软件。常说的就是应用的后端,进行数据和逻辑处理。

    应用服务器

    应用程序服务器通过各种协议把商业逻辑暴露给客户端应用程序。能实现动态网页技术,也称之为应用容器,web容器等

    应用服务器不等于网站后台,但是在应用服务器上可以部署网站后台。通常,Web服务器会有插件来支持脚本语言,比如PHP、ASP等,也可以生成动态的HTTP内容。那为什么要使用应用服务器呢?

    应用服务器可以更好的相应超大用户量的访问,并杜绝sql注入等安全问题,提供动态功能的支持。

    常见的应用服务器有,Tomcat、Jetty、Undertow等。应用服务器也包含http服务

    在这里插入图片描述

    但是一般不会做为http服务器也就是web服务器使用,经常是搭配使用

    浏览器>>>>>>web服务器>>>>>应用服务器>>>>>>数据库

    在这里插入图片描述

    总结

    1. 服务器分静态服务器和动态服务器,web服务器是静态服务器,应用服务器是动态服务器
    2. 应用服务器也可以处理静态需求,但是由于没有web服务器那么专业,所以一般搭配使用,常见如(Nginx+Tomcat)
    3. Apache,Nginx等是静态服务器,是web服务器,也是web服务器软件
    4. tomcat是动态服务器,也可以称之为web容器、应用容器等
    5. 网站后台不是web服务器,但是当web做为一种应用来表达的时候,web服务器可能在口头上会被理解为后台。

    下一篇将正式开始进入http协议的学习

    展开全文
  • Linux下Web服务器详解(概念+搭建)

    千次阅读 2021-02-16 14:02:22
    文章目录详解apache服务的概念与搭建参考阅读一、工作模式1.1 prefork1.2 worker1.3 event二、文件保存位置2.1配置文件2.2 网页文件2.3 日志文件三、参数介绍四、实验部署4.0 部署环境4.1 目录别名4.2 用户认证4.3 ...

    详解apache服务的概念与搭建

    在这里插入图片描述以上就是本篇Blog的层级架构

    • HTML语言:超文本标记语言,使用html语言编写的文本叫超文本,“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。

    • HTTP协议:超文本传输协议
      HTTP使用统一资源标识符(URL)来建立连接和传输数据。是一个基于TCP/IP通信协议来传递数据的协议,属于应用层协议。

    • URL:统一资源定位符
      统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
      格式:
      http://www.bytedance.com:80/image/a.jpg

    知识拓展:
    URI:统一资源标志符,URI与URL都是定位资源位置的,就是表示这个资源的位置信息,就像经纬度一样可以表示你在世界的哪个角落。URI是一种宽泛的含义更广的定义,而URL则是URI的一个子集,就是说URL是URI的一部分。

    参考阅读

    之前写过一篇http服务的搭建,但是写的是rpm包安装的配置即搭建过程,如下

    HTTP重点—Linux下的配置

    Centos6.编译安装pcre时出现的问题及完美解决


    Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Pytho/php等解释器编译到服务器中。 Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。

    Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。


    一、工作模式

    Apache一共有3种稳定的MPM模式(MPM:多进程处理模块),它们分别是 prefork、worker、event

    1.1 prefork

    Apache在启动之初,就预先fork一些子进程,然后等待请求进来。之所以这样做,是为了减少频繁创建和销毁进程的开销。
    每个子进程只有一个线程,在一个时间点内,只能处理一个请求。

    • 优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。
    • 缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求。

    在这里插入图片描述

    1.2 worker

    使用了多进程和多线程的混合模式。它也预先fork了几个子进程(数量比较少),然后每个子进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到1个线程来服务。线程比起进程会更轻量,因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些。
    在高并发的场景下, 因为比起prefork有更多的可用线程,表现会更优秀一些。

    • 优点:占据更少的内存,高并发下表现更优秀。
    • 缺点:必须考虑线程安全的问题。

    在这里插入图片描述

    1.3 event

    它和worker模式很像,最大的区别在于,它解决了keep-alive场景下,长期被占用的线程的资源浪费问题。event MPM中,会有一个专门的线程来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。

    keep-alive
    HTTP采用keepalive方式减少TCP连接数量,但是由于需要与服务器线程或进程进行绑定,导致一个繁忙的服务器会消耗完所有的线程。EventMPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限制,此时Event MPM方式是最有效的,但不能在HTTPS访问下工作。

    在这里插入图片描述

    • 优点:优化worker模式下keep-alive场景下,长期被占用的线程的资源浪费问题
    • 缺点:不能在HTTPS访问下工作

    如何查看当前Web服务器的工作模式?

    [root@localhost ~]# httpd -V | grep -i "server mpm"
    Server MPM:     worker
    

    二、文件保存位置

    2.1配置文件

    • 源码
      主配置文件:PREFIX/etc/httpd.conf
      子配置文件:PREFIX/etc/extra/*.conf
    • rpm
      /etc/httpd/conf/httpd.conf

    2.2 网页文件

    • 源码
      PREFIX/htdocs
    • rpm
      /var/www/html

    2.3 日志文件

    • 源码
      PREFIX/logs
    • rpm
      /var/log/httpd

    三、参数介绍

    注意:apache配置文件严格区分大小写

    3.1 针对主机环境的基本配置参数

    ServerRoot	/usr/local/apache2	#apache主目录
    Listen		:80		#监听端口
    LoadModule	php7	#加载的相关模块
    User
    Group				#用户和组
    ServerAdmin			#管理员邮箱
    ServerName			#服务器名(没有域名解析时,使用临时解析。默认不开启)
    ErrorLog "logs/error_log  			#服务器错误日志
    CustomLog "logs/access_log" common   #访问记录日志
    DirectoryIndex index.html index.php	 #默认网页文件名,优先级顺序
    Includeetc/extra/httpd-vhosts.conf   #子配置文件中内容也会加载生效
    

    3.2 主页目录及权限

    DocumentRoot "/usr/local/apache2/htdocs"	#网页文件存放目录(默认)
    <Directory " /usr/local/apache2/htdocs">	#定义指定目录的权限
    	Options Indexes FollowSymLinks
    			None	#没有任何额外权限
    			All		#所有权限(除去MultiViews以外)
    			Indexes	#浏览权限(当此目录下没有默认网页文件时,显示目录内容)
    			
    			FollowSymLinks	#准许软连接到其他目录
    			MultiViews		#准许文件名泛匹配(需要手动开启模块才有效negotiation)
    		
    AllowOverride None	 #定义是否允许目录下.htaccess文件中的权限生效
    			None	#.htaccess中权限不生效
    			All 	#文件中所有权限都生效
    			AuthConfig	#文件中,只有网页认证的权限生效
    Require all granted (denied)	#访问控制列表
    </Directory>
    
    <IfModule dir_module>	#此标签用来指定访问到指定目录时自动加载哪个页面文件
    	DirectoryIndex index.php index.html	#可以写多个,但是有优先级之分
    </IfModule>
    
    

    四、实验部署

    4.0 部署环境

    实验环境

    虚拟机:Centos6.8
    网络模式:仅主机模式 192.168.56.6
    apache安装版本:httpd-2.4.7
    Apache依赖:apr-1.4.6.tar apr-util-1.4.1.tar pcre-8.34
    Apache 的加密传输模块 mod_ssl rpm安装openssl-devel即可
    

    环境部署总体步骤

    1、源码安装
    2、启动服务
    3、测试

    解决依赖关系:

    注意:所有的源码包我都放在了/lamp
    a. 源码包 2.4.*版本中默认没有集成 apr 的依赖包

    cp -a /lamp/apr-1.4.6 /lamp/httpd-2.4.7/srclib/apr 
    cp -a /lamp/apr-util-1.4.1 /lamp/httpd-2.4.7/srclib/apr-util 
    
    

    b. Apache 默认需要依赖 pcre 软件,但由于 Apache 软件版本较高,则系统预安装的 pcre 无法使用, 所以需要人为手动安装适合版本

    cd /lamp/pcre-8.34 # ./configure 
    make 
    make install 
    
    

    c. Apache 的加密传输模块 mod_ssl,需要安装此软件产生

    yum install openssl-devel
    

    d. httpd安装

    cd /lamp/httpd-2.4.7 
    ./configure --prefix=/usr/local/apache2 -sysconfdir=/usr/local/apache2/etc 
    --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --enable-ssl 
    make 
    make install 
    
    

    创建软连接优化

     ln -s /usr/local/apache2/bin/* /usr/local/bin/
    

    在这里插入图片描述

    启动httpd测试:

    [root@localhost ~]# apachectl -t
    Syntax OK
    [root@localhost ~]# apachectl start
    [root@localhost ~]#
    

    报错提示: 若启动时提示/usr/local/apache2/module/mod_deflate.so 无权限,可关闭 SELinux 解决,类似此类.so 文件不能载入或没有权限的问题,都是 SELinux 问题,MySQL 和 Apache 都可能有类似问题。

    警告提示: 发现启动服务提示:AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set
    the ‘ServerName’ directive globally to suppress this message
    解决办法:打开主配置文件 httpd.conf 搜索 ServerName (约在 200 行左右)改为 ServerName localhost:80(并且去掉前面的#注释)

    验证: 通过浏览器输入地址访问:http://服务器 ip,若显示It works即表明 Apache 正常工作

    访问成功后,页面会显示如下内容,这是因为/usr/local/apache2/htdocs/index.html下的内容是这个

    在这里插入图片描述

    4.1 目录别名

    当 apache 接受请求时,在默认情况下会将 DocumentRoot 目录中的文件送到客户端,如果想将某一不在 DocumentRoot 目录中的文件共享到网站上,并希望将它们留在本来位置而不需要进行移动的话, 处理这种情况可以通过建立别名的方式将 URL 指向特定的目录

    1、主配置文件中打开httpd-autoindex.conf这个子配置文件
    在这里插入图片描述
    2、进入这个子配置文件中,修改希望跳转的URL;仿照模板写一个目录别名
    在这里插入图片描述创建/a/b,并在/b下创建一个html的网页文件

    [root@localhost ~]# mkdir -p /a/b/
    [root@localhost ~]# cd /a/b
    [root@localhost b]# ll
    总用量 4
    -rw-r--r-- 1 root root 16 2月  16 14:19 a.html
    [root@localhost b]# cat a.html 
    this is a alias
    [root@localhost b]# 
    
    

    网站登录测试
    在这里插入图片描述注意:在子配置文件中声明的是b目录,这里测试的时候也要带上/

    在这里插入图片描述在这里插入图片描述
    可见,与预期相符

    4.2 用户认证

    有时候,我们需要给一些特殊的访问设置一个用户认证机制,增加安全。比如我们的个人网站,一般都是有一个管理后台的,虽然管理后台本身就有密码,但我们为了更加安全,可以再设置一层用户身份认证。

    注意,这一层身份认证不是网页内部,写入数据库的认证,而是权限层级的页面认证,是写在操作系统的配置文件中的

    1、主配置文件中对想要验证的目录编辑<Directory>标签

    注意AllowOverride的参数为All,即文件中所有权限都生效
    在这里插入图片描述2、创建/usr/local/apache2/htdocs/admin文件,并创建.htaccess

    AuthName "Welcome to eichi"  #提示信息
    AuthType basic #加密类型
    AuthUserFile /usr/local/apache2/htdocs/admin/apache.passwd #密码文件,文件名自定义。(使用绝对路径)
    require valid-user#允许密码文件中所有用户访问
    
    

    3、建立密码文件,加入允许访问的用户。(此用户和系统用户无关)

    htpasswd	-c	/usr/local/apache2/htdocs/admin/apache.passwd	yi
    -c	建立密码文件,只有添加第一个用户时,才能-c
    htpasswd	-m	/usr/local/apache2/htdocs/admin/apache.passwd	chen
    -m	再添加更多用户时,使用-m 参数
    注意: htpasswd 该命令是 httpd 的命令,需要绝对路径
    

    查看apache.passwd文件
    在这里插入图片描述4、重启测试

    [root@localhost admin]# apachectl -t
    Syntax OK
    [root@localhost admin]# apachectl restart
    [root@localhost admin]# 
    

    在这里插入图片描述
    正确输入用户名与密码后即可正确登录
    在这里插入图片描述点击apache.passwd文件可以看到被允许的用户名与密码

    在这里插入图片描述

    4.3 虚拟主机(※)

    简单来说,就是一个IP为多个不同的域名提供内容,此时验证将www.eichi.comwww.yichen.com作为两个不同的域名,但是其内容都是192.168.56.6上

    1、主配置文件中打开如下这个子配置文件的注释,即使其生效
    在这里插入图片描述

    2、修改子配置文件

    在这里插入图片描述
    3、创建/eichi/yichen两个文件

    [root@localhost htdocs]# cd eichi/
    [root@localhost eichi]# cat index.html 
    this is eichi
    [root@localhost eichi]# cd ../yichen/
    [root@localhost yichen]# cat index.html 
    this is yichen
    
    

    4、重启服务测试

    Windows 下:浏览器下输入两个不同的域名验证网页内容(提前修改C:\Windows\System32\drivers\etc的 hosts 文件) Linux 下:通过 elinks/curl 命令验证:elinks/curl URL 地址(提前修改 etc/hosts 的 hosts 文件)

    增加如下内容
    在这里插入图片描述
    在这里插入图片描述

    可见,与预期相符

    4.4 域名跳转

    一个站点难免会有多个域名,而多个域名总得有一个主次,比如此实验的网站可以用两个域名访问: www.eichi.com 和 www.yichen.com 但是不管我用哪个域名访问,最终都会跳转到 www.eichi.com 上来。这个行为就叫做域名跳转,状态码:301 是永久跳转,302 是临时跳转,网站上一定要设置为 301, 这样对搜索引擎是比较友好的。

    目标:访问www.yichen.com跳转到www.yichen.com

    1、在主配置文件中打开重写模块。即取消注释
    在这里插入图片描述2、在虚拟主机的配置文件中,修改yichen这个文件的目录属性,即All
    在这里插入图片描述3、进入yichen文件内创建匹配规则

    RewriteEngine on # 开启rewrite功能 
    RewriteCond %{HTTP_HOST} ^www.sohu.com # 把以www.sina.com	开头的内容赋值给HTTP_HOST变量 
    RewriteRule ^(.*)$ http://www.sina.com/$1 [R=permanent,L] 
    # ^(.*)$ 指代客户端要访问的资源 
    # $1 把 .* 所指代的内容赋值到$1变量中 
    # R=permanent 永久重定向 = 301 
    # L 指定该规则为最后一条生效的规则,以后的不再生效 
    
    

    4、重启测试

    在这里插入图片描述
    访问www.yichen.com会自动跳转到www.eichi.com
    在这里插入图片描述

    4.5 ssl加密(apache+openssl=https)

    HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP
    通道,简单讲是 HTTP 的安全版。即HTTP 下加入SSL 层,用于安全的 HTTP
    数据传输。这个系统被内置于浏览器中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

    首先检查Apache是否支持SSL,即检查相对应的模块是否安装
    模块存放目录:/usr/local/apache2/modules
    检查模块是否启用:apachectl -M

    在这里插入图片描述1、制作CA证书

    a.	openssl genrsa -out ca.key 1024
    #建立服务器私钥,生成RSA 密钥
    b.	openssl req -new -key ca.key -out chen.csr
    #需要依次输入国家,地区,城市,组织,组织单位,Email 等信息。最重要的是有一个 common name,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr 文件交给 CA 签名后形成服务端自己的证书
    c.	openssl x509 -req -days 365 -sha256 -in chen.csr -signkey ca.key -out chen.crt #使用 CA 服务器签发证书,设置证书的有效期等信息
    注意 1:生成完秘钥和证书文件后,将文件存放在 Apache 的安装目录下的cert 目录下
    注意 2:在生产环境中必须要在 https 证书厂商注册(否则浏览器不识别)
    

    在这里插入图片描述
    在这里插入图片描述
    2、修改主配置文件,使其加载mod_ssl.so模块,并打开/httpd-ssl.conf这个子配置文件

    在这里插入图片描述
    在这里插入图片描述
    3、修改子配置文件

    #添加 SSL 协议支持协议,去掉不安全的协议
    SSLProtocol all -SSLv2 -SSLv3
    
    #修改加密套件如下
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    
    #证书公钥配置(签字的)
    SSLCertificateFile cert/chen.crt
    
    #证书私钥配置
    SSLCertificateKeyFile cert/ca.key
    

    在这里插入图片描述
    4、在主配置文件中添加虚拟主机

    在这里插入图片描述5、重启服务测试验证

    报错提示: AH00526: Syntax error on line 78 of
    /usr/local/apache2/etc/extra/httpd-ssl.conf:SSLSessionCache: ‘shmcb’
    session cache not supported (known names: ). Maybe you need to loadthe appropriate socache module (mod_socache_shmcb?).
    解决方案: 要么不调用此模块,要么让调用的模块加载上,即在主配置文件中打开这个模块即可

    在这里插入图片描述由于CA证书是我自己制作的,即不具备权威,所以网页提示存在风险,测试环境,点击高级,继续进入即可

    在这里插入图片描述
    此时还是可以使用http登录网站的,如下所示

    在这里插入图片描述
    需求:为了保证安全,强制跳转https

    在这里插入图片描述RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [R=301,L]

    可见,使用http访问apache时,自动跳转至https
    在这里插入图片描述


    展开全文
  • 文章目录网络模型TCP服务器的概念Wed服务器的概念netstate 工具嵌入式系统,常用开源Web服务器移植BOA到Ubuntu下载BOA源码传输到虚拟机进行解压编译BOA修改BOA配置文件测试BOA启动boa创建一个HTML文件并放入到www...


    网络模型

    在实际开发中,往往是基于TCP/IP四层模型进行项目的开发。

    TCP/IP四层模型对应Wed项目的映射关系
    应用层嵌入式Wed控制器
    传输层TCP UDP
    网络层IP
    网络接口层网卡

    Web服务指的就是:使用TCP协议进行传输的网页服务

    TCP服务器的概念

    TCP服务器:是一个应用服务器,只要他的底层(传输层)的协议,如果使用了TCP,那么这样的应用程序称之为TCP服务器

    Wed服务器的概念

    Web服务器本身就是一个TCP服务器,由于应用层在数据格处理上,采用了HTTP的协议标准,这样的TCP服务器,称之为Web服务器。这个服务器可以为用户浏览器提供合法的数据

    netstate 工具

    从操作系统角度来分析,TCP/IP四层模型中,应用层处于在用户态,传输层以下就处于内核态了。因此用户往往是不能够直接访问内核空间的,但是我们又有查看当前网络信息的需求,因此Linux内核就提供一个这样的工具netstat
    参数
    | 选项| 含义 |

    -t表示TCP相关
    -u表示UDP相关
    -a表示所有的信息
    -n表示将端口以数字的方式显示

    嵌入式系统,常用开源Web服务器

    服务器性能
    BOA功能交单,代码量少,适合学习
    appweb功能强大、代码量大、工程使用

    移植BOA到Ubuntu

    下载BOA源码

    进入官网
    官网
    在这里插入图片描述下载
    在这里插入图片描述

    传输到虚拟机进行解压

    创建目录用于存放boa
    在这里插入图片描述
    解压
    在这里插入图片描述

    编译BOA

    使用配置脚本获取与体系结构相关的Makefile
    在这里插入图片描述
    在这里插入图片描述
    修改Makefile,去掉调试选项
    在这里插入图片描述
    执行Makefile
    在这里插入图片描述
    出现错误,该错误出现在compat.文件,120行。我们去进行修改

    在这里插入图片描述修改为
    在这里插入图片描述先make clean一下,把之前生成的目标文件删了

    make
    在这里插入图片描述
    strip剔除符号表
    因为我们要移植到嵌入式系统中,希望尽可能地减少占用存储空间
    在这里插入图片描述

    修改BOA配置文件

    配置文件的目的就是告诉BOA如何去工作

    备份一份配置文件,防止修改错误无法还原
    在这里插入图片描述
    将配置文件传到/etc目录下
    在这里插入图片描述修改配置文件
    在这里插入图片描述注意区分 8080端口号,8080是网页浏览的端口号,80是HTTP协议默认的端口号。

    在这里插入图片描述在这里插入图片描述修改日志
    在这里插入图片描述
    在这里插入图片描述修改网页访问路径
    在这里插入图片描述在这里插入图片描述
    cgic 动态网页的路径修改留在后面更新

    测试BOA

    启动boa

    创建访问目录和日志目录
    在这里插入图片描述

    启动boa服务器程序
    在这里插入图片描述

    创建一个HTML文件并放入到www目录下

    测试代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>第一次测试</title>
    </head>
    <body>
        <div class="jumbotron">
            <div class="container">
                <h1>Hello, world!</h1>
                <p>不是你觉到,悟到并做到的都不是你的</p>
                <p><a class="btn btn-primary btn-lg" href="#" role="button">别点我</a></p>
            </div>
          </div>
    </body>
    </html>
    

    放入www目录下
    在这里插入图片描述

    浏览器访问

    在这里插入图片描述

    展开全文
  • Web服务器工作原理详解(基础篇)

    万次阅读 多人点赞 2018-08-14 17:12:00
    概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的...
  • web服务器

    千次阅读 多人点赞 2021-03-24 00:34:17
    web服务器 服务器的相关概念 服务器与客户端 服务器的概念:提供网络服务的一台机器,通过在自己的电脑上安装特殊的软件(或者是运行某段特殊的代码)来提供服务 服务器 = 电脑 + 可以给其他电脑提供服务的软件 ...
  • Web服务器是为Web浏览器提供内容的东西; 浏览器请求的内容,服务器通过Internet网络连接提供。客户端 – 服务器网络设计和WebWeb浏览器和Web服务器一起用作客户端 – 服务器系统。在计算机网络中,客户端 ...
  • web 服务器有哪些

    万次阅读 多人点赞 2018-08-27 16:53:49
    什么是web服务器 "网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。 Web Service架构和云 如果一个软件的主要部分采用了"网络服务",即它把存储或计算环节"外包"...
  • web服务器、Web中间件和Web容器的区别

    万次阅读 多人点赞 2018-11-25 20:36:21
    我们经常会被Web服务器、Web容器和Web中间件这三个概念搞混。因为我们常见的很多网站要么是由IIS搭建,要么是由Apache、Tomcat、Ngnix搭建。所以,我们会把他们都叫成是Web服务器,因为他们都提供了Web服务,可以让...
  • C++web服务器开发

    千次阅读 2019-08-14 08:55:56
    C++web服务器开发 1. 首先介绍一下这个项目;这个项目是通过C++11编写的web服务器,模型为Reactor+非阻塞I/O(epoll作为I/O多路复用实现方式)+线程池,支持get、head请求,支持HTTP长连接,并实现了优雅关闭连接。 ...
  • 1. Web服务器 2. Web容器 ① Web容器的组成 ② Web容器的作用 3. Servlet容器 ① Servlet容器的作用 ② Servlet容器的工作过程 ③ Servlet ④ Servlet的工作过程 ⑤ Servlet变化过程 4. Spring容器 5. SpringMVC容器...
  • 1. 了解web服务器的基本概念、端口号等; 2. 了解静态网站和动态网站的区别、看懂简单标签; 3. 熟悉web服务器的部署和网站的发布、熟悉一台服务器配置多个网站的三种方法; 4. 本节内容主要是为实战中搭配靶机环境...
  • Web服务器的配置与应用(实验)

    千次阅读 2021-06-03 15:38:36
    1 实验目的: 了解万维网(WWW)的原理和作用; 了解Web服务的原理; 掌握Windows2012Server操作系统中Web服务器组件的安装与配置方法; 了解其他操作系统中安装和配置Web服务的方法。
  • Web服务器的配置与管理 计算机网络管理实训教程 形eb展服务器的概念及作用 )什么是Web服务器 web服务器又称为wW( World Wide Web)服务器,它是放置网站的 服务器,主要功能是提供网上信息浏览服务一台Web服务器上可以...
  • 用Rust写了一个简单的Web服务器

    千次阅读 2021-01-30 07:48:06
    Rust最近学了一阵Rust,这个语言的目的是系统编程,卖点是无GC的内存安全。为了实现这一点,Rust引入了所有权、借用、生命周期的概念...Web服务器骨架Web服务器,实际上就是对socket的数据流的处理,监听端口,并对...
  • PAGE 21 应用服务器Web容器和反向代理技术架构解析 我们知道不同肤色的人外貌...本文大纲 一Web服务器概念与基本原理 1 Web服务器的历史 2 Web服务器工作原理 二Web应用程序容器概念与基本原理 1Web应用程序容器的由来
  • 理解Servlet和Servlet容器、Web服务器概念

    万次阅读 多人点赞 2017-03-29 21:39:59
    转载自http://blog.csdn.net/iAm333之前在开源中国...于是,看了孙鑫的《Servlet/JSP深入详解:基于Tomcat的Web开发》、林信良的《JSP&Servlet学习笔记(第二版)》以及网上其他一些相关的资料,将自己的理解整理如下
  • Web安全基本概念

    千次阅读 2022-03-04 09:25:54
    上传,XSS,代码执行,变量覆盖,逻辑漏洞,反序列化等 WEB 中间件对应漏洞,WEB 数据库对应漏洞,WEB 系统层对应漏洞,其他第三方对应漏洞,APP 或 PC 应用结合类 后门 什么是后门?有那些后门? 后门在安全测试中...
  • web服务器和web应用服务器的区别

    万次阅读 2018-06-10 20:22:43
    首先,web服务器和web应用服务器不是同一个概念。起初,我也把两者混为一谈。现在说说自己对这两个的理解,如有不对之处,欢迎指出。 web应用服务器 在java web开发时,最早接触的web服务器是tomcat,其实tomcat是...
  • 在 Node.js 中,不需要使用 IIS、Apache(针对php) 等第三方 web 服务器软件(普通的电脑常常安装这些),而是基于 Node.js 提供的 http 模块,通过几行简单的代码,就能轻松的手写一个服务器软件,从而对外提供 ...
  • web服务器与ftp服务器的区别

    千次阅读 2017-08-25 17:10:03
    个人认为web服务器更侧重于网站网页技术,ftp更侧重于文件传输,共享,下面是一些概念性的东西,可以了解WEB服务器 WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服 务。 (1)应用层使用...
  • 网页浏览是基于web技术,采用什么协议传输信息多希望你的忽冷忽热只是你想吸引我的小伎俩,而不是你真的只在无聊的时候才会想起我。1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是...
  • Web应用程序服务器概念及基本原理 在Web服务器发展的同一个时期,应用服务器已经存在并发展很长一段时间了。一些公司为Unix开发了Tuxedo(面向事务的中间件)、TopEnd、Encina等产品,这些产品都是从类似IMS和CICS的...
  • 嵌入式设备web服务器比较

    千次阅读 2019-05-24 16:23:33
    现在在嵌入式设备中所使用的web服务器主要有:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。 Boa 1.介绍 Boa诞生于1991年,作者Paul Philips。是开源的,应用很广泛,特别适合于...
  • 服务器——Web(World Wide Web)万维网

    千次阅读 2022-03-31 12:42:24
    1.1、概念 1.1.1 什么是Web Web称为万维网,简单理解就是网站,它用来表示Internet主机上供外界访问的资源 Internet上供外界访问的资源分为两大类 静态资源:指Web页面中供人们浏览的数据...Web服务器是运行及发布Web应
  • HTTP学习与Web服务器编程

    千次阅读 2017-11-20 00:00:28
    1)编写一个简单的Web服务器; 2)实现的服务器应能与标准的浏览器进行简单的交互; 3)记录浏览器与服务的交互过程; 4)利用HTML语言编写网页浏览器可通过编写的Web服务器正常访问该网页; 5)支持多用户并发...
  • 使用Apache搭建Web服务器

    千次阅读 2019-05-21 18:51:46
    配置web服务器-搭建LAMP环境 修改web网站根目录-配置别名-虚拟目录 实现Apache打开软链接功能-禁止显示目录列表-用户认证 Apache虚拟主机基于IP-域名-端口三种搭建方式 暂时先使用yum安装LAMP环境(这张用不到...
  • 在某公司通过一个路由器与公网互联,内网通过一台交换机将所有电脑互联,在交换机上面划分两个VLAN,公司内部的PC通过各自所在的VLAN自动获取IP地址,然后去访问公网上面的Web服务器。本任务的实验拓扑如图所示: ...
  • Ubuntu 18.04下使用Apache搭建一个web服务器

    万次阅读 多人点赞 2018-07-24 21:30:40
    Ubuntu 18.04下使用Apache搭建一个web服务器 几个必要的概念 web服务器 以我之见,web服务器就是运行在计算机上的一个向整个网络或者是web客户端、浏览器提供文档的一个程序,我们通过http请求便可以获取到...
  • web服务器运行原理

    千次阅读 2019-03-04 09:45:41
    这几天的工作,就是把程序解耦,将功能分离,服务器只用来提供WEB服务,WEB应用用来实现数据处理。 大家可以了解一下开发中比较常用的WEB框架,比如 Apache ,Nigix,Tomcat等。 没有一个服务器框架安装完成后,就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 384,363
精华内容 153,745
关键字:

web服务器概念