[專業術語]LAMP架構

發表於2019-05-11
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者伺服器的開源軟體,本身都是各自獨立的程式,但是因為常被放在一起使用,擁有了越來越高的相容度,共同組成了一個強大的Web應用程式平臺。隨著開源潮流的蓬勃發展,開放原始碼的LAMP已經與J2EE和.Net商業軟體形成三足鼎立之勢,並且該軟體開發的專案在軟體方面的投資成本較低,因此受到整個IT界的關注。從網站的流量上來說,70%以上的訪問流量是LAMP來提供的,LAMP是最強大的網站解決方案。

LAMP介紹

LAMP指的Linux(作業系統)、ApacheHTTP 伺服器,MySQL(有時也指MariaDB,資料庫軟體) 和PHP(有時也是指Perl或Python) 的第一個字母,一般用來建立web 伺服器。

雖然這些開放原始碼程式本身並不是專門設計成同另幾個程式一起工作的,但由於它們的免費和開源,這個組合開始流行(大多數Linux發行版本捆綁了這些軟體)。當一起使用的時候,它們表現的像一個具有活力的解決方案包。其他的方案包有蘋果的WebObjects(最初是應用伺服器),Java/J2EE和微軟的.NET架構。

LAMP包的指令碼元件中包括了CGIweb介面,它在90年代初期變得流行。這個技術允許網頁瀏覽器的使用者在伺服器上執行一個程式,並且和接受靜態的內容一樣接受動態的內容。程式設計師使用指令碼語言來建立這些程式因為它們能很容易有效的操作文字流,甚至當這些文字流並非源自程式自身時也是。正是由於這個原因系統設計者經常稱這些指令碼語言為膠水語言

軟體元件

Linux:Linux 是免費開源軟體,這意味著原始碼可用的作業系統。
Apache:Apache 是使用中最受歡迎的一個開放原始碼的WEB伺服器軟體。
MySQL:MySQL 是多執行緒、多使用者的SQL資料庫管理系統。
PHP,Perl 或 Python:PHP 是一種程式語言最初設計生產動態網站。PHP 是主要用於伺服器端的應用程式軟體。Perl 和 Python 類似。

來源歷史

Michael Kunze在一篇為德國電腦雜誌c't(1998,第12期,230頁)而寫的文章中使用了縮略語LAMP。這篇文章意在展示一系列的自由軟體成為了商業包的替換物。由於IT世界眾所周知的對縮寫的愛好,Kunze提出LAMP這一容易被市場接受的術語來普及自由軟體的使用。
舉例來說,Wikipedia,免費自由的百科全書,執行的一系列軟體具有LAMP環境一樣的特點。Wikipedia使用MediaWiki軟體,主要在Linux下開發,由Apache HTTP伺服器提供內容,在MySQL資料庫中儲存內容,PHP來實現程式邏輯。

LAMP(Linux- Apache-MySQL-PHP)網站架構是目前國際流行的Web框架,該框架包括:Linux作業系統,Apache網路伺服器,MySQL資料 庫,Perl、PHP或者Python程式語言,所有組成產品均是開源軟體,是國際上成熟的架構框架,很多流行的商業應用都是採取這個架構,和 Java/J2EE架構相比,LAMP具有Web資源豐富、輕量、快速開發等特點,微軟的.NET架構相比,LAMP具有通用、跨平臺、高效能、低價格的 優勢,因此LAMP無論是效能、質量還是價格都是企業搭建網站的首選平臺。

對於大流量、大併發量的網站系統架構來說,除了硬體上使用高 效能的伺服器、負載均衡、CDN等之外,在軟體架構上需要重點關注下面幾個環節:使用高效能的作業系統(OS)、高效能的網頁伺服器(Web Server)、高效能的資料庫(Database)、高效率的程式語言等。下面我將從這幾點對其一一討論。

作業系統

Linux作業系統有很多個不同的發行版,如Red Hat Enterprise Linux、SUSE Linux Enterprise、Debian、Ubuntu、CentOS等,每一個發行版都有自己的特色,比如RHEL的穩定,Ubuntu的易用,基於穩定性 和效能的考慮,作業系統選擇CentOS(Community ENTerprise Operating System)是一個理想的方案。
CentOS(Community ENTerprise Operating System)是Linux發行版之一,是RHEL/Red Hat Enterprise Linux的精簡免費版,和RHEL為同樣的原始碼,不過,RHEL和SUSE LE等企業版,提供的升級服務均是收費升級,無法免費線上升級,因此要求免費的高度穩定性的伺服器可以用CentOS替代Red Hat Enterprise Linux使用。

Web伺服器、快取和PHP加速

Apache是LAMP架構最核心的Web Server,開源、穩定、模組豐富是Apache的優勢。但Apache的缺點是有些臃腫,記憶體和CPU開銷大,效能上有損耗,不如一些輕量級的Web 伺服器(例如nginx)高效,輕量級的Web伺服器對於靜態檔案的響應能力來說遠高於Apache伺服器。

Apache做為Web Server是負載PHP的最佳選擇,如果流量很大的話,可以採用nginx來負載非PHP的Web請求。nginx是一個高效能的HTTP和反向代理服 務器,Nginx以它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。Nginx不支援PHP和CGI等動態語言,但支援負載均衡和容 錯,可和Apache配合使用,是輕量級的HTTP伺服器的首選。

Web伺服器的快取也有多種方案,Apache提供了自己的快取模 塊,也可以使用外加的Squid模組進行快取,這兩種方式均可以有效的提高Apache的訪問響應能力。Squid Cache是一個Web快取伺服器,支援高效的快取,可以作為網頁伺服器的前置cache伺服器快取相關請求來提高Web伺服器的速度,把Squid放在 Apache的前端來快取Web伺服器生成的動態內容,而Web應用程式只需要適當地設定頁面實效時間即可。如訪問量巨大則可考慮使用memcache作 為分散式快取。

PHP的加速可以使用eAccelerator/APC/Xcache加速器,優化和動態內容快取,提高了效能PHP指令碼的快取效能,使得PHP指令碼在編譯的狀態下,對伺服器的開銷幾乎完全消除。它還有對指令碼起優化作用,以加快其執行效率。 使PHP程式程式碼執效率能提高1-10倍。

資料庫
開源的資料庫中,MySQL在效能、穩定性和功能上是首選,可以達到百萬級別的資料儲存,網站初期可以將MySQL和Web伺服器放在一起,但是當訪問 量達到一定規模後,應該將MySQL資料庫從Web Server上獨立出來,在單獨的伺服器上執行,同時保持Web Server和MySQL伺服器的穩定連線。
當資料庫訪問量達到更大的級別,可以考慮使用MySQL Cluster等資料庫叢集或者庫表雜湊等解決方案。

總的來說,LAMP架構的網站效能會遠遠優於Windows IIS + ASP + Access(例如月光部落格)這樣的網站,可以負載的訪問量也非常大,國內的大量個人網站如果想要支撐大訪問量,採用LAMP架構是一個不錯的方案。
綜上所述,基於LAMP架構設計具有成本低廉、部署靈活、快速開發、安全穩定等特點,是Web網路應用和環境的優秀組合。
回覆

相關文章