一、LAMP的起源
LAMP这个词的由来最早始于德国杂志“ct Magazine”,Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字。这些组件虽然并不是开开始就设计为一起使用的,但是,这些开源软件都可以很方便的随时获得并免费获得。这就导致了这些组件经常在一起使用。在过去的几年里,这些组件的兼容性不断完善,在一起的应用情形变得非常普便。为了改善不同组件之间的协作,已经创建了某些扩展功能。
目前,几乎在所有的Linux发布版中都默认包含了“LAMP stack”的产品。这些产品组成了一个强大的Web应用程序平台。“LAMP stack”中的每一个组件都是一个FOSS(免费或者开源软件/Free or Open Source Software)的实例。FOSS方法的好处有三个方面。第一,FOSS软件的性质意味着应用程序可以免费下载,能够让更广泛的人们不用付费就可以使用这个应用软件。这种免费的方式对于广大用户特别具有吸引力。这些用户如果不使用免费的软件就需要付费购买“专业”的商用软件工具。这在制作网站方面通常是一种昂贵的步骤。FOSS许可证是开放式的,因此对于基于FOSS技术的应用软件的使用和限制都非常少。不需要为软件的发布支付任何许可证费就可以开发和应用基于LAMP的工程。因此,这对业余爱好者和专业人员都非常有吸引力。FOSS技术(包括LAMP)的增长和使用的主要原因是因为用户能够访问其资源,修复故障和改善应用软件的性能都非常容易。与开源软件许可证结合在一起,这种方法为许多企业简化了开发过程,并且为企业提供了专有软件或者商业软件的限制中所没有的灵活性。
二、WAMP的出现
以前微软和一些传统的开源厂商认为,是否使用他们的软件乃是一个非此即彼的决定,即:要么选择Microsoft Windows完全排他的.Net基础设施;要么就运行LAMP应用程序栈,这包括Linux、MySQL数据库、Apache Web服务器和3种以P字母起头的程序语言:Perl、Python和PHP。简单地说,前一种选择保证更容易地管理,但价格更贵;后一种选择具有更低的成本和更好的安全性,但代价是更高的复杂性。但随着LAMP逐渐成熟,LAMP也悄悄地演化出了WAMP。这是一种中间路线:称之为WAMP(Windows、Apache、MySQL和Perl/Python/PHP)。现在已经有越来越多的IT用户认为,这种方式可以提供两个阵营中最好的东西。
三、WAMP和LAMP 平台由几个组件组成,呈分层结构。每一层都提供了整个软件栈的一个关键部分:
•Linux和windows:Linux和windows 处在最低层,提供操作系统。其他每个组件实际上也在其上运行。但是,并不一定局限于Linux和windows,如有必要,其他组件包括: Mac OS X 或 UNIX。
•Apache:次低层是 Apache,它是一个 Web 服务器。Apache 提供可让用户获得 Web 页面的机制。Apache 是一款稳定的、支持关键任务的服务器,Internet 上超过 65% 的网站都使用它作为 Web 服务器。PHP 组件实际上是在 Apache 中,动态页面可以通过 Apache 和 PHP 创建。
•MySQL:MySQL 提供 LAMP 系统的数据存储端。有了 MySQL,便可以获得一个非常强大的、适合运行大型复杂站点的数据库。在 Web 应用程序中,所有数据、产品、帐户和其他类型的信息都存放在这个数据库中,通过 SQL 语言可以很容易地查询这些信息。
•PHP:PHP 是一门简单而有效的编程语言,它像是粘合剂,可以将 LAMP 系统所有其他的组件粘合在一起。您可以使用 PHP 编写能访问 MySQL 数据库中的数据和 Linux 提供的一些特性的动态内容。
•Perl:Perl 是一种脚本语言。这表示它并不编译成可执行程序,而是在运行时进行解释的一组指令(脚本)。 Perl 是代表“实际抽取和报告语言”(practical extraction and report language) 的字首组合词。Perl 被誉为语言中的“瑞士军刀”。它功能强大且非常灵活。语言学家 Larry Wall 在廿世纪八十年代后期在 NASA 担任系统管理员时开发了 Perl。他创建 Perl 的目的是使构建报告的任务变得更简单。 Perl 现在用来执行许多任务。它也许是用于在 Web 上进行 CGI(公共网关接口)编程最流行的语言。其原因就是 Perl 是一种功能非常强大的文本处理器,而 Web 编程主要就是文本处理。另外,使用 Perl 通常比使用 C/C++、Java 或 Tcl 更简单,而且它比 Python 更早出现。Perl被称为是一种“胶水语言”。所谓胶水语言,也就是说它是可以用来将许多元素连接在一起的语言。
•Python:Python一种交互式面向对象的解释型编程语言。 Python使用非常清晰的语法实现非常强大的功能。它具有模块、类、意外处理以及非常高级别的动态数据类型和动态定义。并且,它具有接口和库函数供多种系统调用。内建模块还可以使用C或C++语言方便地编写。对于用户界面的编程,Python同样能够胜任。 Python可以运行在Linux 、UNIX、Windows、DOS、OS/2、Mac以及Amiga等等多种环境下。 Python虽然有版权,但完全可以免费使用和分发,甚至是为了商业用途。
WAMP和LAMP 平台由几个组件组成,呈分层结构如图1 。
四、Lamp和wamp的对比
◆安装复杂度
早期安装一个LAMP系统是比较负责的,随着Linux的普及现在安装一个LAMP系统变得比较简单另外许多Linux发行版本(Redhat 、Debian)安装时可以自动配置Apache、php、mysql等组件。相比反而Wamp安装较为复杂,不过现在有多种种WAMP软件包可以下载和安装在Windows服务器上。传统情况下,AMPP -- Apache、MySQL、PHP 和 Perl -- 都是以单独产品的形式进行安装和配置。将它们集成到中间件软件中的承诺使得开源项目的开发相对于 J2EE应用程序的开发来说更具竞争力,至少对于底层的应用程序来说是如此。主要包括以下软件:
1.Wamp5: WAMP5 该软件在你的系统上自动地安装Apache, PHP5, 和MySQL。该软件配以一个以系统托盘图标运行的服务管理器,以及一个插件,现在允许你的在同一个服务器上运行PHP4.3.9和PHP5.0.2。 其官方网站: http://www.wampserver.com/
2.AppServ:是 PHP 网页架站工具组合包,泰国的作者将一些网路上免费的架站资源重新包装成单一的安装程序,以方便初学者快速完成架站,AppServ 4.0所包含的软件有:PHP 4.3.8、Apache 1.3.31、MySQL 4.0.20、Zend Optimizer 2.5.3(Zend Performance是老牌的PHP加速/优化软件,依托于PHP领域最知名的Zend公司。目前已经推出4.0版本,它可以为PHP应用提供程序加速,内容缓存,文件压缩,下载服务等,功能十分强大,获得好几个PHP杂志的推荐奖。)、phpMyAdmin 2.6.0-rc1、Perl 5.8.4。其官方网站:http://appserv.sourceforge.net/
3.XAMPP:XAMPP 是一个功能全面的 AMPP (Apache、MySQL、PHP、Perl)软件包,这是 Linux和Windows 平台上可以使用的几种非商业 AMPP 中间件之一。采用这种紧密的集成,XAMPP 可以运行任何程序:从个人主页到功能全面的产品站点(虽然这仅仅用于开发目的;出于安全考虑,XAMPP 还不适于用在产品服务器上)。基本的软件包包括系统、编程和服务器软件: Apache, MySQL, PHP,(在撰写本文时版本为 4.3.8 和 5.0.1) Perl, ProFTPD,一个 FTP 服务器 ,OpenSSL,可以支持安全套接字层。
4.WAPM:WAPM是运行于Windows平台的综合网络服务器系统。 它包含了以下组件: Apache2,是互联网最最最流行的WEB服务软件,用以提供基本的WEB服务功能,同时支持SSL,GZIP,LIC(IP同时连接数限制)功能; PHP4,PHP5,是互联网最最最流行的动态网页语言,用以提供PHP语言的网络应用程序开发,同时支持ZendOptimizer优化功能和Zend加密功能,或者Turck MMCahe对PHP的加速、优化、加密、动态缓存功能; Tomcat4,用以提供互联网最最最热门的JSP(JavaServer Pages)和Servlet(Java Servlet)的服务解析。 MySQL4,用以提供互联网最最最流行的SQL数据库功能。
◆管理复杂度
通常单独管理LAMP和WAMP都是比较复杂的。随着许多管理套件的出现二者的管理难点都趋于简单化。二者相比不相上下。图2 是wamp5在Windows下的管理界面。图3 是XAMPP 在Linux下的管理界面。
图2 wamp5在Windows下的管理界面 |
图3 是XAMPP 在Linux下的管理界面 |
◆安全性能和执行性能
在安全性能方面笔者认为Lamp目前高于WAMP系统,目前只有部分WAMP软件包自动配置支持SSL连接(包括WAMP和XAMPP),所以XAMPP的官方提示是:所以出于安全考虑,XAMPP 还不适于用在产品服务器上。
执行性能上Lamp目前高于WAMP系统。一些WAMP的软件运行还需要模拟环境工具,如cygwin是一个在windows平台上运行的unix模拟环境,cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。他们基于win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。使用cygwin会影响执行性能。
由于LAMP的不断发展而产生的效果也正符合我们常说的蝴蝶效应,就是当某个地方的蝴蝶扇动了一下的翅膀,却可能影响全球的气候。自从微软推出MSDE后,不但没有遏制LAMP的发展势头,反而使LAMP又演化出了WAMP和WIMP(Windows+IIS+MySQL+PHP)以及MMAP (Mac OS+Apache+MySQL+PHP)。作为用户来说我们欢迎WAMP的出现它提供了更多的选择。