一、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的出現它提供了更多的選擇。