详细介绍一下什么是Apache服务器。

Apache是一个开源的HTTP服务器,可以在大多数计算机操作系统中运行。由于其跨平台性和安全性(注1),所以应用非常广泛,是目前最流行的Web服务器端软件之一。它快速、可靠,并可通过简单的API进行扩展,Perl/Python等解释器可以编译到服务器中。

历史

Apache最初是由伊利诺伊大学厄巴纳-香槟分校的国家高级计算中心开发的。从那以后,Apache被开源社区的成员不断开发和加强。Apache服务器有着可靠和可信的声誉,已经在超过一半的互联网网站上使用——尤其是几乎所有最热门和访问量最大的网站。

起初,Apache只是Netscape Web server(现在的Sun ONE)的一个开源替代产品。渐渐地,它开始在功能和速度上。超越其他基于Unix的HTTP服务器。Apache自1996年4月以来一直是互联网上最受欢迎的HTTP服务器:1999年5月,它运行在57%的web服务器上;到2005年7月,这一比例上升到69%。

作者声称最初选择这个名字是因为它容易记忆,但最流行的解释是,这个名字来自于1995年初开发Apache时,修改了当时最流行的HTTP服务器NCSA HTTPd 1.3的代码,因此它是“一个拼凑”的服务器。但在服务器官网的FAQ中是这样解释的:“‘阿帕奇’这个名字是为了纪念美国印第安人中一个名叫阿帕奇(印地语)的分支,众所周知他们拥有高超的战斗策略和无尽的耐心。”无论如何,Apache 2.x分支不包含任何NCSA代码。

特点

Apache支持很多特性,大部分都是通过编译好的模块实现的。这些特性包括从服务器端编程语言支持到身份验证方案。一些公共语言接口支持Perl、Python、Tcl和PHP。常见的认证模块包括mod_access、mod_auth和mod_digest。其他例子有SSL和TLS支持(mod_ssl)、代理模块、有用的URL重写(由mod_rewrite实现)、定制的日志文件(mod_log_config)和过滤支持(mod_include和mod_ext_filter)。Apache日志可以通过web浏览器使用免费脚本AWStats或Visitors进行分析。

2.x版本

Apache的2.x版本对Apache 1.x版本进行了重要的增强。这包括:线程、对非UNIX平台(如Windows)的更好支持、新的Apache API和IPv6支持。

评价

2004年8月,《PC Magazine》2004评选出10过去30年最佳软件产品。他们中的一些人要么有最辉煌的历史,要么最有创造力。它对apache的评价是:第三名:Apache (Apache,1995介绍)Apache现在已经进化成了一个“灯”,即Linux、Apache、MySQL和PHP的结合体。这是一个开源软件项目,已经对微软构成了严重的威胁”。NET”战略。尤其是Apache web server,让用户充分体验开发源码软件的稳定性、可靠性和定制性。

当Apple.com评论apache时,他说:Apache是不断发展的服务器软件的一个重要部分。它是免费的,但却是无价的。Apache是资源开放运动中的绝对宝藏,因为它不是个人专利而是对公众免费的。一旦你有了这些源代码,程序员就可以自由地做他们想做的事情——当其他程序员接管他们的工作时,他们可以被赋予同样的权利来改变和修改他们自己的源代码。

给…作注解

虽然新的漏洞不断被发现,但由于其开源的特性,总是可以很快被修复。所以总的来说,它的安全性还是相当高的。

()[# page _ #][# page _ #]AddHandler CGI-script。计算机生成图像

AddHandler服务器已解析。shtml

Sethandler cgi脚本

AddHandler定义哪个扩展名由哪个字符串描述。

SetHandler指定目录中的所有文件都由该字符串描述。

我在这里提到的命令与它们的结构密切相关。下面将描述处理程序和类型之间的关系。很多东西从外面看不清楚。下面,我们从内部来看。

程序的基本结构

-

Apache是非常跨平台的。为了实现这个目标,简化模块编写者的负担,Apache完成了很多基本功能,比如IO和内存分配,这些功能都是独立于具体平台的。还有一些有用的例程,比如Hashtable和Array。在整个系统中,Apache有一个基本点,尽可能使用简单的结构和算法,不仅易于理解和维护,而且提高了其稳定性。

在UNIX系统上,Apache在窗口上采用多进程模型和多线程模型。在多流程模型中,子流程处理客户请求,父流程管理子流程。当系统过载时,父进程将启动多个子进程。当系统空闲时,父进程会杀死几个子进程。子进程的数量介于“MinSpareServers”和“MaxSpareServers”之间。而且每个子进程处理的请求数量有限,可以解决内存泄漏等问题。所有进程状态都记录在共享内存中。由于每个进程的状态都记录在一小块内存中,通常只读写这一块内存,所以Apache不使用任何同步机制。

Apache使用了Richard Steve的书中提到的几种多进程服务器模型,并根据它们的特点选择在不同的系统上使用不同的方法:

1.接受:

只有在内核级实现accept时,才有可能在accept时阻塞。

2.选择:

选择时阻塞。

3.互斥/锁文件:

使用mutex或lock_file互斥accpet。

三种方式都需要屏蔽,区别是屏蔽不一样。前两种方法会造成所谓的巨人组问题:同一资源上阻塞的多个进程同时被唤醒,会导致重新竞争。但是根据理查德·史蒂夫的评价,第一种方法最快,第二种是第二种,第三种最慢。事实上,第三种方法在linux上也会出现巨人集团问题。

虽然Apache不强调性能,但不代表他们不重视性能。反而Apache认为realiable是服务器端第一,但是Apache的表现还是不错的。