LAMP的介紹
LAMP的概括:
LampLinux+Apache+Mysql+Perl/PHP/Python一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因為常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。隨著開源潮流的蓬勃發展,開放源代碼的LAMP已經與J2EE和.Net商業軟件形成三足鼎立之勢,并且該軟件開發的項目在軟件方面的投資成本較低,因此受到整個IT界的關注。從網站的流量上來說,70%以上的訪問流量是LAMP來提供的,LAMP是最強大的網站解決方案.
LAMP的起源
LAMP這個特定名詞最早出現在1998年。當時,Michael Kunze為德國計算機雜志c't寫作的一篇關于自由軟件如何成為商業軟件替代品的文章時,創建了LAMP這個名詞,用來指代Linux 操作系統、Apache網絡服務器、MySQL 數據庫和PHP (Perl或Python)腳本語言的組合(由四種技術的開頭字母組成)。由于IT世界眾所周知的對縮寫的愛好,Kunze提出的LAMP這一術語很快就被市場接受。O'Reilly和MySQL AB更是在英語人群中推廣普及了這個術語。隨之LAMP技術成為了開源軟件業的一盞真正的明燈。
目前,幾乎在所有的Linux發布版中都默認包含了“LAMP stack”的產品。這些產品組成了一個強大的Web應用程序平臺。“LAMP stack”中的每一個組件都是一個FOSS(免費或者開源軟件/Free or Open Source Software)的實例。FOSS方法的好處有三個方面。第一,FOSS軟件的性質意味著應用程序可以免費下載,能夠讓更廣泛的人們不用付費就可以使用這個應用軟件。這種免費的方式對于廣大用戶特別具有吸引力。這些用戶如果不使用免費的軟件就需要付費購買“專業”的商用軟件工具。這在制作網站方面通常是一種昂貴的步驟。FOSS許可證是開放式的,因此對于基于FOSS技術的應用軟件的使用和限制都非常少。不需要為軟件的發布支付任何許可證費就可以開發和應用基于LAMP的工程。因此,這對業余愛好者和專業人員都非常有吸引力。FOSS技術(包括LAMP)的增長和使用的主要原因是因為用戶能夠訪問其資源,修復故障和改善應用軟件的性能都非常容易。與開源軟件許可證結合在一起,這種方法為許多企業簡化了開發過程,并且為企業提供了專有軟件或者商業軟件的限制中所沒有的靈活性。
LAMP的平臺組成
LAMP 平臺由幾個組件組成,呈分層結構。每一層都提供了整個軟件棧的一個關鍵部分:
Linux和windows:Linux和windows 處在最低層,提供操作系統。其他每個組件實際上也在其上運行。但是,并不一定局限于Linux和windows,如有必要,其他c操作系統包括: Mac OS X 或 UNIX。
Apache:次低層是 Apache,它是一個 Web 服務器。Apache 提供可讓用戶獲得 Web 頁面的機制。Apache 是一款穩定的、支持關鍵任務的服務器,Internet 上超過 65% 的網站都使用它作為 Web 服務器。PHP 組件實際上是在 Apache 中,動態頁面可以通過 Apache 和 PHP 創建。
lampMySQL: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雖然有版權,但完全可以免費使用和分發,甚至是為了商業用途。
LAMP的安裝
早期安裝一個LAMP系統是比較復雜的,隨著Linux的普及現在安裝一個LAMP系統變得比較簡單另外許多Linux發行版本(Redhat 、Debian)安裝時可以自動配置Apache、php、mysql等組件。
#p#
LAMP的優化
硬件優化
1、升級硬件的一般規則:對于 PHP 腳本而言,主要的瓶頸是 CPU ,對于靜態頁面而言,瓶頸是內存和網絡。一臺 400 Mhz 的普通奔騰機器所下載的靜態頁面就能讓 T3 專線(45Mbps)飽和。
2、采用 hdparm 來優化磁盤,一般能提升 IDE 磁盤讀寫性能 200%,但是對 SCSI 硬盤也有效果。(不同類型的硬盤對比)
策略優化
3、Apache 處理 PHP 腳本的速度要比靜態頁面慢 2-10 倍,因此盡量采用多的靜態頁面,少的腳本。
4、PHP 腳本如果不做緩沖,每次調用都需要編譯,因此,安裝一個 PHP 緩沖產品能提升 25-100% 的性能。
5、如果你采用了 Linux 系統,建議升級內核到 2.4,因為靜態頁面由內核服務。
6、另外一項緩沖技術是把不常修改的 PHP 頁面采用 HTML 緩沖輸出。
7、不要在 Web 服務器上運行 X-Windows ,關掉沒有必要運行的進程。
8、如果能夠用文本就不要用圖像,盡量減小圖片的尺寸。
9、分散負載,把數據庫服務器放到另外的機器上去。采用另外低端的機器服務圖片和 HTML 頁面,如果所有的靜態頁面在另外一臺服務器上處理,可以設置 httpd.conf 中的 KeepAlives 為 off ,來減少斷開連接的時間。
10、以上所有的方法都是針對單機而言的,如果你覺得系統還是不夠快,可以采用集群,負載均衡,緩沖技術。采用 Squid 作為緩沖,配置 Squid 的方法。
編譯優化
11、把基于文件的會話切換到基于共享內存的會話。編譯 PHP 時采用 --with-mm 選項,在 php.ini 中設置 set session.save_handler=mm 。這個簡單的修改能讓會話管理時間縮短一半。
12、采用最新版本的 Apache ,并把 PHP 編譯其中,或者采用 DSO 模式,不要采用CGI方式。
13、編譯 PHP 時,建議采用如下的參數:
--enable-inline-optimization --disable-debug
配置優化
14、修改 httpd.conf :
# 關閉 DNS lookups,PHP 腳本只拿 IP 地址
HostnameLookups off
15、如果網絡擁擠,CPU 資源不夠用,采用 PHP 的 HTML 壓縮功能:
output_handler = ob_gzhandler
PHP 4.0.4 的用戶請不要使用,因為存在內存泄漏問題。
16、修改 httpd.conf 中的 SendBufferSize 為你最大的頁面文件的大小。加大內核的 TCP/IP 寫緩沖大小。
17、采用數據庫的持久連接時,不要把 MaxRequestsPerChild 設置得太大。
第三方軟件優化
18、如果喜歡從修改 Apache 源碼入手,可以安裝 lingerd。在頁面產生和發送后,每個 Apache 進程都會浪費一段時光在客戶連接上,Lingerd 能接管這項工作,讓 Apache 迅速服務下一個客戶請求。
19、如果你足夠勇敢的話,還可以采用 Silicon Graphics 的 Accelerated Apache 補丁。這個工程能使 Apache 1.3 快 10 倍,使 Apache 2.0 快 4 倍。
安裝一個 PHP 緩沖產品能提升 25-100% 的性能。
【編輯推薦】