apache

Apache软件基金会(Apache 软件 基金会,简称ASF)为全球最大的开源软件基金会。是一家在美国注册成立的501c3非营利公共慈善组织,1999年由Apache Group的成员组建,其主要目的是:通过提供硬件、通信和业务基础设施,为开放、协作的软件开发项目提供基础;创建一个公司和个人可以向其捐赠资源的独立法人实体,确保这些资源将用于公共利益;为个体志愿者提供一种免受针对基金会项目的法律诉讼的途径;保护应用于“Apache”品牌下的软件免遭其他组织滥用。

基金会简介

Apache软件基金会(也就是Apache 软件 基金会,),是专门为运作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织,这个开源软件项目就是 Apache 项目。这个组织把自己作为有着相同目标的开发者与用户的团体,而不是简单的共享在一个服务器上的一组项目的组织团体。在它所支持的 Apache 项目与子项目中,所发行的软件产品都遵循 Apache许可证(Apache License)。

Apache软件基金会(ASF)正式,它的。这个“Apache 组织”在1999年以前就已经存在很长时间了,这个组织的开发爱好者们聚集在一起,在美国伊利诺伊州大学超级计算机应用程序国家中心(National 内角 for Supercomputing Applications,简称为NCSA)开发的 NCSA HTTPd 服务器的基础上开发与维护了一个叫 Apache 的 HTTP服务器。

最初 NCSA HTTPd 服务器是由 Rob McCool 开发出来的,但是它的最初开发者们逐渐对这个软件失去了兴趣,并转移到了其他地方,造成了没有人来对这个服务器软件提供更多的技术支持。因为这个服务器的功能又如此强大,而代码可以自由下载修改与发布,当时这个服务器软件的一些爱好者与用户开始自发起来,互相交流并分发自己修正後的软件版本,并不断改善其功能。为了更好进行沟通,Brian Behlendorf 自己建立了一个邮件列表,把它作为这个群体(或者社区)交流技术、维护软件的一个媒介,把代码重写与维护的工作有效组织起来。这些开发者们逐渐地把他们这个群体称为“Apache 组织”,把这个经过不断修正并改善的服务器软件命名为 Apache 服务器(Apache Server)。

这个命名是根据北美当地的一支印第安部落而来,这支部落以高超的军事素养和超人的忍耐力着称,19世纪后半期对侵占他们领土的入侵者进行了反抗。为了对这支印第安部落表示敬仰之意,取该部落名称(Apache)作为服务器名。但一提到这个命名,这里还有流传着一段有意思的故事。因为这个服务器是在 NCSA HTTPd 服务器的基础之上,通过众人努力,不断地修正、打补丁(Patchy)的产物,被戏称为“A Patchy Server”(一个补丁服务器)。在这里,因为“Patchy”与“Apache”是谐音,故最後正式命名为“Apache Server”。

后来由于商业需求的不断扩大,以 Apache HTTP 服务器为中心,启动了更多的与 Apache 项目并行的项目,比如mod_ PerlPHP、Java Apache等等。随着时间的推移、形势的变化,Apache软件基金会的项目列表也不断更新变化中--不断的有新项目启动,项目的中止以及项目的拆分与合并。比如一开始,Jakarta 就是为了发展 JAVA 容器而启动的 Java Apache 项目,後来由于太阳公司(SUN)的建议,项目名称变为 Jakarta。但当时该项目的管理者也没有想到 Jakarta 项目因为 JAVA 的火爆而发展到如今一个囊括了众多基于 JAVA 语言开源软件子项目的项目。以至后来,不得不把个别项目从 Jakarta 中独立出来,成为 Apache软件基金会的顶级项目,Struts 项目就是其中之一。

最近,为了避免 SCO 与 unix 开源社区之间的发生纠纷降临在 Apache 软件基金会(ASF)身上。Apache软件基金会(ASF)里面开始采取一些措施,让众多的项目进行更多协调的、结构化管理,并保护自己的合法利益,避免一些潜在的合乎法律的侵犯(potential legal attacks)。

由于Apache软件基金会在开源服务器技术上的卓越贡献,荣获了著名IT杂志SD Times颁发的2013 SD Times 100奖项,位于“极大影响力”分类第二位,仅次于亚马逊。也由于Hadoop大数据处理和大数据挖掘上的出色表现,ASF也荣获了“大数据和商业智能”的第二位。

主要成果:HTTP Server,Ant,DB,iBATIS,Jakarta,Logging,Maven,Struts,tomcat,Tapestry等等。Apache有名的几个项目介绍

HTTPServer

这个在前面的段落介绍过了,Apache已经是他的代号了

相关产品

Subversion

Subversion已经正式由Apache接管。

ActiveMQ

免费开源由java编写符合JMS1.1标准的消息 中间件。

另外,它也支持通过除java语言外的语言的使用

蚂蚁

这个太出名了。标准的批处理工具。是一套基于java的程序打造工具

Commons

一些常用的工具类库,包括common-pool,dbcp,fileupload,Common-beans等。

Excalibur

它的主要产品是一个由java写成的,名字叫做Fortress(要塞)的轻量级的可嵌入式反向控制容器。

IBATIS

并入的一个项目,是NHibernate的一个很流行的工具

Geronimo

是Apache软件基金会为了创造一个兼容JBoss的容器,而整理出来的一个新成果

Jakarta

许多Java子项目的集成,tomcat,ant等就是从这里孵化出去的。

James

是一套用java开发的邮件、新闻组、消息服务器。它使用avalon的组件框架。目前支持 SMTP, POP3 和 NNTP 很快也会支持 IMAP

Logging

基于java的可靠,快速,扩展性强的日志工具

Maven

是一套java开发的工程综合管理工具。它基于工程对象模型(POM)的理念

Portals

门户产品

Struts

一套通过servlets和jsp来搭建web应用的MVC框架

tomcat 用量最大的免费的Java服务器

Hadoop

现今最为著名的大数据神器,包括分布式存储和计算框架。

虚拟主机

1、核心的增强

unix线程

在有POSIX线程支持的Unix系统上, apache 虚拟主机现在可以运行在混合多进程,多线程模式。这一改进改善了很多(但不是全部)配置的可扩缩性。

新的构架系统

构架系统已经对原来基于autoconf和libtool上的草稿进行了重写。这使得Apache的配置系统与其他包的配置系统更加相似。

多协议支持

apache 虚拟主机现在已经拥有了能够支持伺服多协议的底层构造。mod_echo就是作为示例的成果。

对非Unix平台更好的支持

Apache 2.0在诸如BeOS,OS/2和Windows等非Unix平台上有了更好的速度和稳定性。随着平台特定的multi-processing modules (MPMs)和Apache Portable Runtime (APR)的引入,Apache在这些平台上的指令由它们本地的API指令实现。避免了以往使用POSIX模拟层造成的bug和性能低下。

新的Apache API

2.0中模块的API进行了重大改变。很多1.3中模块排序/模块优先级的问题已经不复存在了。2.0自动处理了很多这样的问题,模块排序现在用per-hook的方法进行,从而拥有了更多的灵活性。而且,新的调用被加入以在避免修改Apache服务器核心的前提下提供额外的模块容量。

IPv6支持

在所有能被Apache Portable Runtime库提供IPv6支持的系统上,Apache默认获得IPv6侦听套接字。另外,Listen, NameVirtualHost和VirtualHost 指令支持了IPv6的数字形地址字串(比如:“Listen [fe80::1]:8080”)。

滤过

apache 虚拟主机的模块现在可以写成过滤器的形式。当内容流经过它到服务器或从服务器到达的时候进行操作。举例来说,这将使使用mod_include中的INCLUDES过滤器将CGI脚本的输出解析为服务器端包含指令成为可能。mod_ext_filter允许外部程序充当过滤器的角色,就象用CGI程序做处理器一样。

多语种错误回报

返回给浏览器的错误信息现在已经用SSI文档实现了多语种化。管理员可以利用此功能进行定制以达到观感的一致。

简化了的配置

很多易混淆的配置项已经进行了简化。经常产生混淆的Port和BindAddress配置项已经取消了;只有Listen选项现在用于IP地址的绑定;ServerName配置项中指定的服务器名和端口仅用于转向和虚拟机的辨识。

本地Windows NT Unicode支持

Windows NT上的Apache 2.0现在使用utf-8标准来进行文件名的解析。这个操作直接转换成底层的Unicode文件系统,由此为所有以Windows NT(包括Windows 2000和XP)为基础的安装提供了多语言支持。这一支持目前尚未涵盖Windows 95, 98 or ME系统,因为它们仍使用机器本地的代码页进行文件系统的操作。

正则表达式库更新

apache 虚拟主机包括了Perl兼容正则表达式库(PCRE)。所有的正则表达式现在都使用了更为强大的Perl 5的语法。

2、模块的增强

MOD_ssl

Apache 2.0中的新模块。此模块是一个面向OpenSSL提供的SSL/TLS加密协议的一个接口。

mod_dav

Apache 2.0中的新模块。此模块继承了HTTP分布式发布和版本控制规范,用于发布、得到web内容。

mod_deflate

Apache 2.0中的新模块。此模块允许支持此功能的浏览器请求页面内容在发送前进行压缩,以节省网络资源。

mod_auth_ldap

Apache 2.0.410中的新模块。此模块允许使用LDAP数据库存储HTTP基础认证所需的证书。随之而来的另一个模块:mod_ldap ,则提供了连接池和结果的缓冲。

mod_auth_digest

利用共享内存实现了了额外的跨进程的session缓冲支持。

mod_charset_lite

Apache 2.0中的新模块。这个试验模块允许针对字符集的转换和记录。

mod_file_缓存

Apache 2.0中的新模块。这个模块包含了Apache 1.3中mod_mmap_static模块的功能,另外进一步增加了缓冲能力。

mod_headers

此模块在Apache 2.0中更具灵活性。它现在可以更改mod_proxy需用的请求headers,而且它能有条件的设置回复headers。

mod_proxy

代理模块已经被完全重写以充分利用新的过滤器结构的优势,从而实现一个更为可靠的HTTP/1.1兼容的代理模块。另外,新的配置部分提供了更具可读性(而且更快)的代理站点控制;重载配置的方法已经不再支持了。这个模块现在依照协议支持分为proxy_connect, proxy_ftp和proxy_http三个部分。

mod_negotiation

加入一个新的ForceLanguagePriority指令用于保证所有情况下客户端都收到同一个文档,取代了不可接受的或多选择的回应。另外,negotiation和MultiViews算法已经进行了优化以提供更完美的结果,还有,提供了包括文档内容的新型类型图。

mod_autoindex

经自动索引后的目录列表现在可被配置为使用HTML表格以达到更清晰的格式,而且允许更为细化的排序控制,包括版本排序和通配符滤过目录列表。

mod_include

新的指令集允许修改默认的SSI元素的开始和结束标签,而且允许以主配置文件里的错误提示和时间格式的配置取代SSI文档中的相应部分。正则表达式(现在已基于Perl的正则表达式语法)的解析和分组结果可以用mod_include的变量$0 .. $9取得。

mod_auth_dbm

现在在AuthDBMType的规策下支持多种类似DBM的数据库。

开源技术

Apache HTTP服务器项目

Apache HTTP服务器项目主要致力于为现代操作系统开发和维护开源的HTTP服务器,其中包括Unix和Windows NT。这个项目的主要目标是提供一个可以与当前的HTTP标准同步提供安全、高效和可扩展的服务器的HTTP服务。

自1996年4月以来,Apache就变成了互联网上最流行的Web服务器。

主要用户群:连续13年,Apache HTTP服务器都是全球Web服务器的领军者,为1.13亿个网站提供服务。

Apache Tomcat

Apache Tomcat是一个可以执行Java Servlet和JavaServer网页技术的开源软件。Apache和tomcat是相对独立的,用户可以通过Apache访问Tomcat资源,反之亦然,二者可以在同一台服务器上。

Apache Tomcat是由全世界各地的最佳开发者合力研发而来的,是一款非常优异的开源软件。

用户群:Tomcat推动了很多不同行业的大型的、关键的Web应用程序的发展,其中包括ETrade、沃尔玛公司、天气频道以及Dell EMC等。

Apache Lucene

Apache Lucene是一个高性能、全功能的文字搜索引擎图书馆,是由Java语言编写的。Apache

Lucene适用于任何需要全文字搜索的应用程序,特别是跨越平台。一开始,Lucene是由Java语言编写的,目前已经被移植到其他的语言,其中包括

Delphi、PerlC#C++PythonRubyPHP等。

用户群:苹果在线零售店、CNETNetflix维基百科Yelp、Comcast、Linkedin、The

Smithsonian、多个政府机构(美国食品药品监督管理局、DOD等)、Technorati、互联网档案馆(例如美国在线公司黄页的上下文搜索等)。

Apache Struts

Apache Struts是一个用于开发Java EE Web应用程序的开源Web应用程序框架。Apache Struts使用和扩展Java Servlet

API去鼓励开发者采用模型视图控制器(MVC)构架。

用户群: IRS、波士顿环球报、大赦国际、Sears、Alamo Car Rental、National Car Rental、Travelocity等等。

Apache Geronimo

Apache Geronimo是Apache

软件基金会的开放源码JBoss服务器,它集成了众多先进技术和设计理念。这些技术和理念大多源自独立的项目,配置和部署模型也各不相同。

Geronimo项目的目标就是产生一个服务器运行时间框架,将最好的开源替代品汇集到一个统一、易用的模型中,去满足开发人员和系统管理员的需求。

用户群:AMD、Chariot Solutions、IBM、Virtuas等。

Apache Ant

Apache

Ant是由Apache软件基金会所提供的一个基于Java的开发工具,它是将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

用户群:大多数的Java设计都被用于管理大量信息流,例如纽约州就使用Apache Ant去管理美国最大的青年计划,每天可以实时更新超过25万学生的记录。

Apache Cocoon

Apache Cocoon是一个基于Spring框架的围绕分离理念建立的构架,在这种框架下的所有处理都被预先定义好的处理组件线性连接起来,能够将输入和产生的输出按照输送流水线顺序处理。

用户群:Apache Lenya、Daisy CMS、Hippo CMS、Mindquarry等等,Apache

Cocoon通常被作为一个数据抽取、转换、加载工具或者是系统之间传输数据的中转站。

Apache SpamAssassin

spamassassin是一个由Apache开发的一个著名的反垃圾引擎,邮件系统完整的集成了SpamAssassin反垃圾引擎。

SpamAssassin中包含了各种各样的垃圾邮件监测技术,其中包括基于DNS和checksum的垃圾邮件监测、Bayesian过滤、外部程序、黑名单和在线数据库等。

用户群:SpamAssassin被数以千计的独立开发商和用户所采用,并被作为数个商业产品的主要成分.\

Apache Axis

Apache Axis是一个基于SOAP应用的框架,核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应用。

用户群:WSO2、MuleSource IBM、Progress 软件等。

Apache Logging Services

Apache Logging Services项目主要是为了提供应用程式除错以及监督的日志登录服务。

Apache Logging Services项目的产品包括三个日志登录框架,分别为log4net for Java、log4cxx for

C++以及log4net for the Microsoft .NET framework。

Apache Logging Services还被应用于日志查看器和分析工具Chainsaw中。

用户群:Apache Logging在Java开发中无处不在。

Apache Commons

Commons是一个主要专注于可再用Java组件所有方面的Apache项目。

Apache Commons项目由3个部分组成:

*The Commons Proper—可再用Java组件的贮存处;

*The Commons Sandbox—Java组件的开发工作区;

*The Commons Dormant—沙盒组件的贮存库。

用户群:亚马逊Web服务、谷歌

参考资料

【开源创新】SeaTunnel 宣布毕业,中国又一 Apache 软件基金会顶级项目诞生!.中国通信学会.2024-03-22

HOW THE ASF WORKS.The Apache Software Foundation.2024-03-22