Apache

Apache

Web服务器软件
Apache是世界使用排名第一的Web服务器软件。[1]它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中[2]。Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
  • 中文名:阿帕奇
  • 外文名:Apache HTTP Server
  • 别名:
  • 使用类型:网页服务器软件
  • 开发者:Apache Software Foundation
  • 支持语言:英文
  • 编程语言:C
  • 语言版本:英文
  • 软件授权:Apache License
  • 兼容性:类UNIX系统,Windows
  • 许可协议:Apache许可证2.0
  • 原作者:Robert McCool
  • 操作系统:Cross-platform
  • 开发状态:活跃
  • 初始版本:1995

相关简介

Apache是世界排名第一的Web服务器,世界上50%以上的Web服务器在使用Apache。1995年4月,最早的Apache(0.6.2版)由Apache Group公布发行。Apache Group是一个完全通过Internet进行运作的非盈利机构,由它来决定ApacheWeb服务器的标准发行版中应该包含哪些内容。准许任何人修改隐错,提供新的特征和将它移植到新的平台上,以及其它的工作。当新的代码被提交给Apache Group时,该团体审核它的具体内容,进行测试,如果认为满意,该代码就会被集成到Apache的主要发行版中。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。

Apacheweb服务器软件拥有以下特性:

支持最新的HTTP/1.1通信协议

拥有简单而强有力的基于文件的配置过程

支持通用网关接口

支持基于IP和基于域名的虚拟主机

支持多种方式的HTTP认证

集成Perl处理模块

集成代理服务器模块

支持实时监视服务器状态和定制服务器日志

支持服务器端包含指令(SSI)

支持安全Socket层(SSL)

提供用户会话过程的跟踪

支持FastCGI

通过第三方模块可以支持Java Servlets

如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。

历史

初期

Apache起初由伊利诺伊大学香槟分校的国家超级计算机应用中心(NCSA)开发。此后,Apache Httpd被开放源代码团体的成员不断的发展和加强。Apache Http网站服务器拥有牢靠可信的美誉,已经在全球超过半数的网站中被使用-特别是几乎所有最热门和浏览量最大的网站。比方说,维基百科网站服务器就是使用Apache的。

发展

刚开始发展时,Apache只是Netscape网页服务器(现在是Sun ONE)之外的开放源代码选择之一。慢慢地,它开始在功能和速度超越其他基于Unix的HTTP服务器。到了Apache2.x的时代,实际效率又比Apache1.x更快,2.x比1.x能同时服务更多的网页连接数。

1996年4月以来,Apache一直是Internet上最流行的HTTP服务器:1999年5月它在57%的网页服务器上运行,到了2005年7月这个比例上升到了69%。在2005年11月最风光的时候达到接近70%的市占率,不过在部份拥有大量域名的主机域名商转换为微软IIS平台后,Apache市占率近年来体现些微下滑。同时搜索引擎巨擘Google自己的网页服务器平台GWS推出后(也可说是一种修改版的Apache),再加上nginx、Lighttpd等轻量化网页服务器软件在市场上有一些能见度,这些因素都反应在整体网页服务器市占率的消长,Apache的市占率就随之滑落。根据en:Netcraft在2009年2月的最新统计数据,Apache的市占率已经降为49.41%,IIS降为34%,GWS8.39%,nginx2.95%。尽管如此,Apache仍旧是当前互联网市场上,市占率最高的网页服务器软件。

命名

作者宣称因为Apache这个名字好记,所以才在最初选择它,但是流传最广的解释是(也是最显而易见的):这个名字来自于一个事实:当Apache在1995年初开发的时候,它是由当时最流行的HTTP服务器NCSA HTTPd1.3的代码修改而成的,因此是“一个修补的(a patchy)”服务器。然而,在Apache服务器官方网站的FAQ中是这么解释的:“Apache这个名字是为了纪念名为Apache的美洲原住民印第安人的一支,众所周知他们拥有高超的作战策略和无穷的耐性”。无论如何,Apache2.x分支不包含任何NCSA的程序代码。

特性

Apache的特性:

1、几乎可以运行在所有的计算机平台上。

2、支持最新的HTTP/1.1协议。

3、简单而且强有力的基于文件的配置(HTTPD.CONF)。

4、支持通用网关接口。

5、支持虚拟主机。

6、支持HTTP认证。

7、集成PERL。

8、集成的代理服务器。

9、可以通过WEB浏览器监视服务器的状态,可以自定义日志。

10、支持服务器端包含命令(SSI)。

11、支持安全SOCKET层(SSL)。

12、具有用户会话过程的跟踪能力。

13、支持FASTCGI。

14、支持JAVASERVLETS。

参数

1、获得Apache:获得apache源代码最方便的方法是到http://www.apache.org,选择最新的版本。然后,tarxvzfapache_x.x.xx.tar.gz;

2、编译Apache在src目录下./configure可用./configure--help|less得到帮助,make,makeinstall,install;

3、apache的启动和关闭sbin/apachectlstartsbin/apachectlstopsbin/apachectlrestart(重起);

4、一些模块介绍:下列的组模块令和组文件的基本的验证。auth-anon使用匿名的FTP-styleusernames和口令。auth-dbm使用BerkeleyDB文件存储usernames,口令,和组信息。如果你有很多usernames并关心性能,这是很有用的。digest使用HTTP文摘认证,这比基本认证更安全。expire模块让你定制Expire过期时间;

5、Apache1.3的缺省目录布局是:./bin服务器二进制,apachectl原本./confApache配置文件./include/apacheApache标题文件./libexec共用的对象文件./manman页./sbin服务器二进制,apachectl原本,logrotator./cgi-bin缺省CGI原本/二进制的目录./share/htdocs缺省文件根./htdocs/manualApache手册./share/icon包含各种图标GIFs的目录./var/apache/loglog文件的目录./var/apache/proxyproxy缓存目录./var/apache/runhttpd.pid(包含主要的httpd过程标识符的文件)在此目录;

6、主要文件如下:httpd.conf,在/usr/local/apache/conf或/etc/httpd/conf下apachectl,在/usr/local/apache/bin或/etc/httpd/bin下access_log,纪录用户访问信息,在../logs里error_log,纪录用户访问错误信息,也在../logs里;

7、httpd.conf基本设置Port,Apache在哪一个TCP端口进行侦听,HTTP的默认端口为80。如果你使用其它端口,你不得不在URLs中指定端口来连接你的服务器,User,Group由于安全上的原因,在Linux上,可以通过把User和Group都设置成nobody Server Root参数应该是Apache安装的基础。除非你移动了周围的资料,否则其值与你所给定的值一样。Server Name,如果你的机器有多个名称或者IP地址,设置Apache表征服务器的名称。Document Root是Web树的根目录,UserDir在启用~username处理请求时,此指令告诉Apache哪个目录追加到用户的主目录(home)。UserDir被设置为public_html。用户将只有基本的网页服务功能,是一个容器指令。格式的结束指令。及相关的和指令的目的,是为了让你在每个目录或者每个文件的基础上,控制Apache行为的方式。指令放在中,也适用于子目录。

FollowSymLinks选项,告诉Apache它可以从文档根目录内部到文档根目录外部跟踪符号链接。在文档根目录内部,FollowSymLinks和Indexes都处于开启状态(on)。万一缺省的索引文件(通常为index.html)不存在时,最后允许目录列表显示。

指令设置

Directory中,用Options指令你可以控制什么选项是被允许的。

Options指令:

1、ExecCGICGI脚本程序能够运行于该目录树。

2、FollowSymLinks在该目录中,服务器将跟踪符号链接。注意:即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名。注意:如果在区域内设置,该选项会被忽略

3、Includes服务器端包容被允许。

4、IncludesNOEXEC服务器端引用被允许,但#exec命令和CGI脚本程序的#include被禁止。

5、Indexes如果要求映射到目录的URL和在该目录里没有DirectoryIndex(例如,index.html),那么服务器将返回格式化的目录列表。

6、MultiViews处理多重浏览内容被允许。

7、SymLinksIfOwnerMatch通过与用户id一样的链接,服务器只跟踪目标文件或者目录所拥有的符号链接。

8、All除MultiViews外的一切东西。要是没有Options指令,默认为all。

Access File Name命令来设置(缺省设置为.htaccess)。在任何目录中,Apache配置指令可被放入一个叫做.htaccess的文件。指令也可应用于目录里的子目录。在访问文件中,

Allow Override控制哪个指令将被使用。如果Allow Override被设置为none。Apache甚至不会检查访问文件。

Allow Override参数:

1、AuthConfig,授权指令哪一个允许使用;

2、FileInfo,用来控制文档类型和处理方法的指令;

3、Indexes,使用其中的一个指令来控制目录列表、图标等的显示;

4、Limit,允许使用指令来控制主机访问;

5、Options,使用Options指令中的一个。

“allow”和“deny”指令就是用来控制访问的。第三个指令“order”,控制这些指令的使用顺序。如果你把顺序设置成allow,deny,而没有指定哪个主机是被拒绝的话,则所有主机都被假定为禁止访问。在本例子中,allow指令被选中,deny指令被普遍应用。在.htaccess文件或者指令内,更多典型的配置可能是:orderallow,denyallowfromalldenyaaa.com所有主机被允许,除了那些来自aaa.com域的主机。

如果相反,orderdeny,allowdenyfromallallowfrom11.23.44deny首先被检查。只有来自11.23.44IP网络的主机才被允许访问。它也可能指定网络掩码,参数11.23.44.0/255.255.255.0相当于上面的例子。

配置

1、支持用户个人主页:在../conf/httpd.conf中加入UserDir/home/*/public_html设置用户可以使用CGI等:optionsExecCGISetHandlercgi-bin#如果在全局设置了AddHandlercgi-bin.cgi。

2、虚拟主机设置:

基于IP的虚拟主机若该机器的IP地址为192.168.0.2,虚拟的IP为192.168.0.3首先,在一台机器的网卡上绑定多个IP地址去服务多个虚拟主机。

/sbin/ifconfigeth0:0192.168.0.2netmask255.255.255.0broadcast192.168.11.255up

/sbin/routeadd-host192.168.0.2eth0:0

设置../conf/httpd.conf文件:看DocumentRoot是什么,如果为/home/httpdDocumentRoot/home/httpd/aaa创建目录/home/httpd/aaa。

基于名字的虚拟主机:编辑../conf/httpd.conf

NameVirtualHost192.168.0.2DocumentRoot/home/httpd/aaaServerNameaaa.yourdomain.com

要有NameVirtualHost在最前面,下面依次为各个虚拟主机,还需要把aaa.yourdomain.com的DNS都指向IP地址192.168.0.2

3、Apache用户认证基本的Apache用户认证假定,对目录/home/aaa下的文件需要做到用户认证,在httpd.conf中加入下面的行allowoverrideauthconfigorderallow,denyallowfromall用在目录/home/aaa下放文件.htaccess,内容如下:authname"PleasegivemeyourIDnumberandPassword"authtypebasicauthuserfile/etc/.passwdrequirevalid-user

用htpasswd生成文件/etc/.passwd,htpasswd-c/etc/.passwdusername

发展过程

Apache起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发。此后,Apache被开放源代码团体的成员不断的发展和加强。Apache服务器拥有牢靠可信的美誉,已用在超过半数的因特网站中-特别是几乎所有最热门和访问量最大的网站。

开始,Apache只是Netscape网页服务器(现在是Sun ONE)之外的开放源代码选择。渐渐的,它开始在功能和速度超越其他的基于Unix的HTTP服务器。1996年4月以来,Apache一直是Internet上最流行的HTTP服务器:1999年5月它在57%的网页服务器上运行;到了2005年7月这个比例上升到了69%。在2005年11月的时候达到接近70%的市占率,不过随着拥有大量域名数量的主机域名商转换为微软IIS平台,Apache市占率近年来呈现些微下滑。而Google自己的网页服务器平台GWS推出后,加上Lighttpd这个轻量化网页服务器软件使用的网站慢慢增加,反应在整体网页服务器市占率上,根据netcraft在2007年7月的最新统计数据,Apache的市占率已经降为52.65%,8月时又滑落到50.92%。尽管如此,它仍旧是现阶段因特网市场上,市占率最高的网页服务器软件。

广的解释是(也是最显而易见的):这个名字来自这么一个事实:当Apache在1995年初开发的时候,它是由当时最流行的HTTP服务器NCSA HTTPd1.3的代码修改而成的,因此是“一个修补的(a patchy)”服务器。然而在服务器官方网站的FAQ中是这么解释的:“‘Apache’这个名字是为了纪念名为Apache(印地语)的美洲印第安人土著的一支,众所周知他们拥有高超的作战策略和无穷的耐性”。无论如何,Apache2.x分支不包含任何NCSA的代码。

相关替代品

Apache是目前最流行的Web应用服务器:占据了互联网应用服务器70%以上的份额。Apache能取得如此成功并不足为奇:它免费、稳定且性能卓越;但Apache能取得如此佳绩的另一个原因是,当时互联网刚刚兴起时,Apache是第一个可用的Web应用服务器,人们没有其他的选择。

不可否认,Apache是一个优秀的全能Web服务器,但对于那些需要更强大的Web应用服务器(比如大小、可定制、响应速度、可扩展性等方面)的人而言,Apache明显不符合他们的要求,寻找Apache的替代者是更好的选择。

下面所列出的是当前可以替代Apache的几个热门Web应用服务器,他们的特点和适用的应用场景各不相同,但都是针对Apache所不够擅长的某一方面设计的。

1、Lighttpd

最流行的Apache服务器替代者,Lighttpd是一个单线程的针对大量持续连接做出专门优化的Web服务器(这正是多数高流量网站和应用程序需要的)。众多的流行Web站点选择Apache,包括Youtube、SourceForge和维基百科。Lighttpd支持FastCGI、HTTP服务器端压缩、mod-rewrite和其他众多有用的功能。尽管Lighttpd拥有Apache的绝大多数功能,但它仍然保持轻量级(仅1MB)并且可以与Apache使用相同的配置。

2、Nginx

Nginx是一个来自俄罗斯的流行的Web应用服务器,它被应用于大量的俄罗斯的高并发站点,俄罗斯的搜索引擎网站rambler就是基于Nginx构建的。Nginx对静态页面的支持相当出色,轻量且免费。Nginx不支持CGI,但是支持更灵活的FastCGI。PHP5.2及之前的版本比较多的是使用PHP-FPM来管理PHP FastCGI进程。PHP-FPM使用给PHP源码打补丁后编译的方式让新手多少有些难上手,但从PHP5.3.2开始内置PHP-FPM,只需编译PHP时启用PHP-FPM。

3、Boa

很多的网站管理员对在硬件配置较低的服务器上使用轻量级的Boa作为Web服务器极其信赖。B oa是一个单线程的HTTP服务器,这意味着Boa只能依次完成用户的请求而不会fork新的进程来处理并发请求。Boa的设计目的是速度和安全,对于运行于单服务器的流行Web站点而言,Boa是一个好的选择。

4、Jigsaw

Jigsaw是W3C推出的开源的Web服务器平台,使用Java语言编写,可以安装在有Java运行环境的系统上。做为W3C(World Wide Web Consortium)开发的服务器产品,其作用主要是对新技术的实现做一个例示,而非一个全功能的商业服务器产品。不过就Jigsaw2.0版本而言,它的功能还是超过了目前Web服务器的平均水平。最重要的是,它体现了未来HTTP协议和基于对象的Web服务器技术的发展。如果你希望你的平台支持所有下一代技术,Jigsaw是一个好的选择。

以上所提到的四个Apache Web服务器的替代者只是目前众多优秀应用服务器产品的一部分。

版本发布

2012年08月18日,Apache HTTP Server 2.4.3发布。

2012年08月23日,Apache HTTP Server 2.2.23发布。

相关词条

相关搜索

其它词条