apache

1999年创办的非盈利性组织

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_ Perl 、 PHP 、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>配置部分提供了更具可读性(而且更快)的代理站点控制;重载<Directory "proxy:...">配置的方法已经不再支持了。这个模块现在依照协议支持分为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、 Perl 、 C# 、 C++ 、 Python 、 Ruby 和 PHP 等。

用户群: 苹果 在线零售店、 CNET 、 Netflix 、 维基百科 、 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服务、 谷歌 。

参考资料

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