Web服务器:WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。 WWW 是 Internet的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。正是因为有了WWW工具,才使得近年来 Internet 迅速发展,且用户数量飞速增长。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP(超文本传输协议)进行信息交流,这就是人们常把它们称为HTTPD服务器的原因。
Web服务器是可以向发出请求的浏览器提供文档的程序
1、服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应;
2、最常用的Web服务器是Apache和Nginx;
3、Internet上的服务器也称为Web服务器,是一台在Internet上具有独立IP地址的计算机,可以向Internet上 的客户机提供WWW、Email和FTP等各种Internet服务。
Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
Web服务器的内容
⑴应用层使用HTTP协议,监听在80端口。
⑵HTML文档格式。
⑶浏览器统一资源定位器(URL)。
URI:Uniform Identifier 统一资源标示符,以统一的风格标记互联网上的每个资源
URL:Uniform Resource Locator 统一资源定位符,定位互联网上的统一资源
格式: 指定协议:服务器端地址[:端口]:路径(服务工作路径) 其中端口可以省略
如: ftp://192.168.0.1:80/pub/gls/server.repo
指定协议:服务器端地址[:端口]:路径(文件路径) 其中端口可以省略
如: http://192.168.0.1:80/index.html
http资源获取的方法:
常用:1、GET : 主要向服务器请求传输页面
2、HEAD : 主要获取http协议的首部
3、POST : 提交表单的过程
协议(响应)状态码:当客户端向服务端发出请求时,服务端回应的信息
http的状态码分为以下几类:
1xx 纯粹的说明信息 (以1开头的状态)
2xx 正常响应的信息 如:#curl -I http://172.16.0.1/exam.8th.cfg
3xx URL重定向信息 请求如:#curl -I http://172.16.0.1/index.html--> http://172....会有提示说明该文件的位置已经改变到这个位置
4xx 是一种暂时性错误状态,客户端错误或者客户端请求的资源本来就不存在
5xx 永久性错误状态
动态网站(服务器):服务器端有一段脚本程序,当客户端请求的时候,服务端需要运行这个程序,并且执行以后的返回内容在不同的请求之间很可能不一样的机制。
动态网站有以下特点:
1.动态网站可以实现交互功能,如用户注册、信息发布、产品展示、订单管理等等;
2.动态网页并不是独立存在于服务器的网页文件,而是浏览器发出请求时才反馈网页;
3.动态网页中包含有服务器端脚本,所以页面文件名常以asp、jsp、php等为后缀。但也可以使用URL静态化技术,使网页后缀显示为HTML。所以不能以页面文件的后缀作为判断网站的动态和静态的唯一标准;
4.动态网页由于需要数据库处理,所以动态网站的访问速度有点慢;
5.动态网页由于存在特殊代码,所以相比较静态网页,其对搜索引擎的友好程度相对要弱一些;
CGI:Common Gateway Interface 在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。简单来说就是,通用网关接口。
举个例子来简单说明下:现在的个人主页上大部分都有一个留言本。留言本的工作是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样,整个过程结束。
功能:
绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。
处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户。
PHP:是英文超级文本预处理语言Hypertext Preprocessor的缩写,也可以认作是Person Home Page,个人主页页面。是一种HTML内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C++进行程序的扩展!
PHP的特点:程序开发快,运行快,编辑简单,实用性强,PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。效率高:PHP消耗相当少的系统资源。PHP支持脚本语言为主,同为类C语言
php加速器 :ZendOptimizer,xcache,APC,eAccelarator 这些加速器作为php的插件存在
php配置文件: /etc/php.ini (主配置文件)
Apache:目前是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web
服务器端软件之一。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支。
1、Apache其服务名:httpd
2、主配置文件:/etc/httpd/conf/httpd.conf
3、apache又有很多子配置,因此其具有很多配置片段:
其片段配置文件:/etc/httpd/conf.d/*
4、其默认存放网页的目录:/var/www/html
Apache有三中工作方式:
1.CGI:apache响应每一个用户请求,都有启动一个独立进程,而apache自身又要启动一个进程,来等待用户请求,生成一个web进程后,又要生成一个处
理程序的进程,当处理完后,每一个进程又要按照之前的配置进行相应个数的进程销毁,而服务器的资源开销也就开销在这个地方了!
2.模块化:当用户请求的有动态内容时,CGI的工作模式中那个应用程序的进程不在是独立的进程,而是作为Apache的模块存在,在Apache的地址空间中运行。
3.FASTCGI:之前的apache的工作进程不在是一个独立的进程了,而是作为一个服务存在,当个用户请求的页面存在动态内容时,服务器就向这个服务发起
请求,进行处理,而这种方式的好处是这个进程具有了自己的管理机制,而它又是独立工作成一个服务,因此它也可以存放在不同的服务器上,这样就大大
的提高了网站的性能。
Apache的工作受SElinux影响,因此在启动apache之前将SElinux状态暂时停用:
#setenforce 0
查看SElinux的工作状态:
#getenforce
Apache web服务器软件拥有以下特性:
支持最新的http/1.1通信协议
拥有简单而强有力的基于文件的配置过程
支持通用网关接口CGI
支持基于IP和基于域名的虚拟主机
支持多种方式的HTTP认证
集成Perl处理模块
集成代理服务器模块
支持实时监视服务器状态
定制服务器日志
支持服务器端包含指令(SSI)
支持安全Socket层(SSL)
提供用户会话过程的跟踪
支持FastCGI
MPM:Multi-Processing Module是一个多道处理模块。与其他类型模块不同的是,Apache必须有一个且仅有一个MPM处在运行中
其分为两种模块类型:worker和prefork
worker模块是一个线程响一个请求。其稳定性不好,若一个用户的请求导致这个线程崩溃了,损坏了这个文件,会产生连锁反应,导致整个进程崩溃,其它用户也一并崩溃。简而言之就是任何一个线程崩溃,会影响这个进程下的其它线程
worker模块说明:
StartServers 2 ----> 启动空闲进程个数
MaxClients 150 ----> 用户请求个数数
MinSpareThreads 25 ----> 最小空闲线程个数
MaxSpareThreads 75 ----> 最大空闲线程个数
ThreadsPerChild 25 ----> 每一个进程至多启动多少个线程
MaxRequestsPerChild 0 ----> 不限制每个进程最多响应多少用户的请求
prefork模块每个一个进程响应每一个请求。其性能稳定性好,任何一个进程崩溃都不会影响其它进程
prefork模块的说明:
StartServer 8 ----> 在服务器刚启动就启动进程个数
MInSpareServer 5 ----> 最少空闲进程个数
MaxClients 256 ----> 同时在线请求的个数(最大客户端数)
ServerLimit 256 ----> 定义最多启动多少进程,最多响应多少个的用户的请求
MaxRequesPerCHild 4000 ----> 每个进程最多响应多少用户的请求