LAMP从入门到精通
LAMP是Linux、Apache、MySQL、PHP/Perl/Python的简称。1998年Michael Kunze在电脑杂志C'T撰写的文章中首次使用了缩略语LAMP。它所组成的各组件都是开源软件,能被很方便自由地获取,导致这些组件的广泛使用,并不断完善发展,初步形成新的软件系统格局,并可能成为开源软件系统工程化的核心模式。
本书的目的是教你如何使用LAMP技术来安装和设置网络服务器。当读完本书后,你将拥有一个强力而高效的服务器来支持你的个人网页、强大的电子商务或是商业网站以及其他任何网络需求。
本书所使用的软件完全是免费的,不需要任何费用和注册,除非你自己选择购买光碟。此外,所有的软件可以非常简单地通过互联网下载。这里要说明的是,开源软件不是免费软件。这里免费的概念是你可以自由获得软件的源代码、自由修改、再发布。当然前提是你必须遵守软件的证可证。如Linux,遵守GPL v2.0许可证。
LAMP的组成
LAMP具有简易性、低成本和执行灵活等特点,使其成为业内发展最快,应用最广的服务器系统。LAMP架构的崛起,与J2EE架构和.Net架构形成了三足鼎立的竞争态势。通过证明,LAMP是一组高效的软件,作为一个系统能够良好的运行。每个组成元素的开放式结构允许相互间顺畅而缜密的结合,从而形成了一个强大的组合。回到1997年,那些早期的LAMP技术的采纳者被认为是激进的,但在今天开源运动正在蓬勃发展,无论是大企业还是小公司都在采用LAMP的开发方式,因为LAMP的每一个应用软件的稳定性已经超过了那些比它昂贵许多的软件兄弟们。
1.Linux操作系统
Linux是一种计算机操作系统内核,基于GNU GPL v2许可证下发行,它具有性能好、安全性高、开放自由特点,你可以直接从网上下载得到并安装它。Linux能够根据你的需要而决定是否运行图形化用户界面。(没有图形化用户界面的运行方式对于那些对Linux不太熟悉的Windows使用者来说就相当于运行DOS模式)
操作系统最重要的组成部分是内核。在GNU/Linux系统中,Linux就是内核组件。而该系统的其余部分主要是由GNU工程编写和提供的程序组成。因为单独的Linux内核并不能成为一个可以正常工作的操作系统,现在人们接触到的各种各样的Linux发行版,包含大量的GNU工程软件,包括了一个shell程序、工具、程序库、编译器及开发工具,还有许多其他程序,比如软件开发工具、数据库、Web服务器(例如Apache)、X Window、桌面环境(比如GNOME和KDE)、办公套件(比如OpenOffice.org)等等。所以我们更倾向使用GNU/Linux一词来表达人们通常所说的Linux。
Linux的创始人是Linus Torvalds,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,因而开始了Linux雏形的设计。1991年9月Linus在网上发布Linux0.01版,1994年3月Linux内核1.0版问世。由于Linux的源代码是开放的,因此受到了全世界开发者的广泛支持,发展速度非常快,形成了以社区为中心的开发模式。就是人们通常说的开源社区,这种模式已经得到了充分肯定,越来越多的人参与到开源社区中来,使得Linux的发展越来越快,目前Linux的内核已经发展到2.6版本。
现在,Linux已经成为了一种受到广泛关注和支持的操作系统。包括IBM和惠普在内的一些计算机业巨头也开始支持Linux。很多人认为,和其他商用Unix系统以及微软Windows相比,作为自由软件的Linux具有低成本,安全性高,更加可信赖的优势。
2.Apache Web服务器
Apache,一种开放源代码的HTTP服务器,可以在大多数计算机操作系统中运行,由于它多平台和安全性,被广泛使用,成为最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中,得到了用户的广泛认可。
Apache起初由伊利诺伊大学香槟分校的国家高级计算程序中心开发。此后,Apache被开放源代码团体的成员不断的发展和加强。Apache服务器凭借其牢靠可信的美誉,在超过半数的因特网Web服务器中得到应用。
开始,Apache只是Netscape网页服务器(现在是Sun ONE)之外的开放源代码选择。渐渐的,它开始在功能和速度超越其他基于Unix的HTTP服务器。1996年4月以来,Apache一直是Internet上最流行的HTTP服务器:1999年5月它在57%的网页服务器上运行;到了2005年7月这个比例上升到了69%。
Apache支持许多特性,大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持Perl、Python、TCL和PHP流行的认证模块包括mod_access,mod_auth和mod_digest。其他的例子有SSL和TLS支持(mod_ssl),proxy模块,很有用的URL重写(由mod_rewrite实现),定制日志文件(mod_log_config),以及过滤支持(mod_include和mod_ext_filter)。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。
3.MySQL数据服务器
MySQL是一个开放源码的多用户、多线程SQL数据库服务器软件。开发者为瑞典MySQL AB公司。它能让你通过一种编写语言如PHP来存储和找回数据。可以快速而高效的存储多种类型的数据,如布尔类型、文本类型、整数类型、图像类型、二进制数据和BLOB数据。使用数据库对于创建动态网站是十分重要的。动态网站这一概念来自于基于用户互动基础上能够使用单页代码而显示不同信息。如果不使用数据库和编写语言如PHP来操控数据,这一切听起来都是不可能的。
MySQL具有诸多特性,如数据复制、表格锁定、询问限制、用户账号、多层数据库、持续连接以及MySQL5的存储过程、触发器和视图。这些特性在接下来都会被更具体的介绍,而现在你应该知道使用这一伟大的数据库管理器你将收益颇丰。
目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据,对于中小型应用系统是非常理想的。MySQL支持标准的ANSI SQL语句,它还支持多种平台,在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。它同时支持Linux、Windows、Solaris等主流操作系统。
4.PHP脚本语言
PHP是一种流行的开放源代码的编程语言,主要用于开发服务器端应用程序及动态网页。PHP原始的缩写是“Personal HomePage”,现在官方正式定为“PHP: Hypertext Preprocessor”的递归缩写。PHP程序是开放源代码最流行的一种脚本语言,可以用于替代微软的ASP体系、Sun微系统公司的JSP/Java体系,以及CGI/Perl等。它是一种嵌入HTML页面中的脚本语言。PHP在Web服务器上运行。当PHP脚本被客户端请求时,被请求的程序开始执行,并把执行的结果返回给客户端的网页浏览器。发送给客户端浏览器的内容是普通的HTML文本,不包含PHP代码。这是与嵌入HTML的客户端脚本的最主要的区别。在有了PHP-GTK扩展的支持后,现在的PHP已经可以被用来编写窗口程序了,PHP4版本以后,PHP也可以用来编写后台SHELL脚本程序,甚至有用PHP程序编写Web服务器。
PHP最初在1995年出现仅仅是一组简单的Perl语句,用来追踪Rasmus Lerdorf的在线简历。随着时间的推移,Lerdorf开始编写更大的C语言程序以适应他日益扩大的对功能的要求,包括数据库的连接性问题。Lerdorf接下来决定发布它的最初版本,是开源类型的PHP/FI以让所用人使用和改进。在当时,PHP/FI代表的是个人主页/表格编译器。到了1997年,第二个版本(PHP/FI2.0)发布并开始吸引全球几千人的追随。尽管许多个人都对代码做出了贡献,但是Lerdorf仍然是所有开发的主要贡献者。
1997年目睹了一个新的PHP时代的到来:PHP3。这一版本是由Andi Gutmans和Zeev Suraski对PHP/FI2.0的完全重写,他们不满足于之前他们所工作的大学一个项目上PHP所提供的功能。为了对PHP日益成长的用户群进行资本化,Lerdorf、Gutmans和Suraski决定以PHP的名字发布这一新版本,从而开始了我们今天所熟知的PHP。在1998年冬天,PHP4的开发由Gutmans和Suraski进行。他们在2000年5月公布了第一个官方版本。PHP4具有更高超的表现力并向它日益扩大的“粉丝”群们推广包括HTTP环节、输出缓冲和更安全的处理用户输入方式在内的新技术。
我们相信PHP5将会创造出更大的效应。一个新的以目标为本并与Zend Engine2、堆栈跟踪和例外处理相结合的模型被寄予厚望,并成为PHP在全球发展的动力。与此同时,引进同外部以目标为本的模型结合,例如COM和Java,将会是向混合中投入一个通配符,这将使其他社区有能力与PHP实现无缝结合成为现实。这表明以前所写的APIs将能够更轻松的与PHP相结合,从而消除了其他社区不使用PHP的最后理由。
为什么要使用LAMP
Linux操作系统的核心是基于GNU GPL v2发行的。Linux在GPL下注册的原因很简单:你被授权对软件进行修改,相应地你就要将你的版本公之于众,并随之公布源代码。这就保证了GPL下的“开源”,允许其他人对你所做的工作进行修改。
尽管并没有必要在GPL下注册任何开源软件,但GPL确实防止了代码不向公众公开的行为。任何人不能够通过改进一项软件之后关闭它的源代码,使得开源社区在项目开发上,从最初的源代码中获利。也是诸如Linux和大多数开源软件等伟大的操作系统发展的方式。这种类型的同级评审也正是开源运动的基础。
GPL是由免费软件基金会编写和维护的。如果你对GPL感兴趣的话,可以访问他们的网站:http://www.gnu.org/copy/gpl.html。
Apache、MySQL和PHP是本书中我们将涉及和使用的免费应用软件。尽管它们其中有些并没有在GPL下注册,但它们也同样都处于一个相似的许可证之下。这不仅使得我们能够共享全球无数开发者的工作,而且也使得我们能够自由地选择使用和传播这些应用软件。从我们基本的Linux操作系统到我们的邮件服务器,我们将会使用由那些喜欢做一件事情的人带给我们的免费软件,而那些人爱做的事就是:编写软件。
组成LMAP的各个组件,都是开源软件中的最为出色的项目,这些组件完全是开源的,所以LAMP完全是开源的。LAMP代表着当今人类对科技发展的一种新的态度,新的理想,代表着科技发展的一种新的模式,一种新的文化理念。全球财富500强企业中,有70%的企业采用Linux承担企业核心业务;全球半数以上的互联网服务器采用开源软件。这里所涉及到的开源软件产品包括:Linux操作系统(68%)、Apache(67%)、PHP开源脚本语言(53%)和开源数据MySQL(52%)。这些数据是在2005年5~6月期间,美国国家计算中心调查了140多个公司的IT高管人员后所得,作为开源软件组合LAMP已被称为开源软件中的启明之灯。