深入分析 LAMP 架構
圖-LAMP
LAMP 架構具體內容如下:
LAMP就是Linux Apache MySql Php的縮寫,是目前非常強大的架站組合。
如今,使用 LAMP(Linux®、Apache、MySQL 和 PHP/Perl)架構的應用程序不斷被開發和部署。但是,服務器管理員對應用程序本身幾乎沒有控制能力,因為應用程序是別人編寫的。這份共三部分的系列文章將討論許多服務器配置問題,這些配置會影響應用程序的性能。第一篇文章討論 LAMP 架構、一些性能度量技術以及一些基本的 Linux 內核、硬盤和文件系統調節。后續的文章將研究 Apache、MySQL 和 PHP 組件的調優。
Linux、 Apache、MySQL 和 PHP(或 Perl)是許多 Web 應用程序的基礎 —— 從 to-do 列表到 blog,再到電子商務站點。WordPress 和 Pligg 是兩個支持大容量 Web 站點的常用軟件包。這種架構簡稱為 LAMP。幾乎每個 Linux 發布版都包含 Apache、MySQL、PHP 和 Perl,所以安裝 LAMP 軟件是非常容易的。
安裝的簡便性使人誤以為這些軟件會自行順利地運行,但是實際情況并非如此。最終,應用程序的負載會超出后端服務器自帶設置的處理能力,應用程序的性能會降低。LAMP 安裝需要不斷監控、調優和評估。
系統調優對于不同的人有不同的含義。本系列主要關注 LAMP 組件(Linux、Apache、MySQL 和 PHP)的調優。對應用程序本身進行調優是另一個復雜的問題。應用程序和后端服務器之間存在一種共生關系:未能適當調優的服務器甚至會使最好的應用程序在負載之下崩潰,而借助充分的調優,完全可以避免編寫得很糟糕的應用程序使服務器緩慢如牛。幸運的是,正確的系統調優和監視可以指出應用程序中的問題。
#p#
LAMP 架構
對任何系統進行調優的第一步都是了解它的工作原理。按照最簡單的形式,基于 LAMP 的應用程序是用 PHP 這樣的腳本語言編寫的,它們作為 Linux 主機上運行的 Apache Web 服務器的一部分運行。
PHP 應用程序通過請求的 URL、所有表單數據和已捕獲的任意會話信息從客戶機獲得信息,從而確定應該執行什么操作。如有必要,服務器會從 MySQL 數據庫(也在 Linux 上運行)獲得信息,將這些信息與一些 Hypertext Markup Language(HTML)模板組合在一起,并將結果返回給客戶機。當用戶在應用程序中導航時,這個過程重復進行;當多個用戶訪問系統時,這個過程會并發進行。但是,數據流不是單向的,因為可以用來自用戶的信息更新數據庫,包括會話數據、統計數據(包括投票)和用戶提交的內容(比如評論或站點更新)。除了動態元素之外,還有靜態元素,比如圖像、JavaScript 代碼和層疊樣式表(CSS)。
#p#
LAMP 的變體
LAMP 最初是指 Linux、Apache、MySQL 和 PHP(或 Perl)。但是,如果管理員不擅長 Linux,那么可以在 Microsoft® Windows® 上運行 Apache、MySQL 和 PHP,這并非一種少見的情況。同樣,也可以將 Apache 換成別的系統,比如 lighttpd,產生的仍然是 LAMP 風格的系統,但是首字母縮寫不再是 LAMP 了。也可以改用另一種開放源碼數據庫(比如 PostgreSQL 或 SQLite)、商業數據庫(比如 IBM® DB2®)或者免費的商業引擎(比如 IBM DB2 Express-C)。
本文主要關注傳統的 LAMP 架構,因為這種架構是最常見的,而且它的組件都是開放源碼的。
在研究 LAMP 系統中的請求流之后,就來看看可能出現性能瓶頸的地方。數據庫提供許多動態信息,所以數據庫對查詢的響應延遲都會反映在客戶機中。Web 服務器必須能夠快速地執行腳本,還要能夠處理多個并發請求。最后,底層操作系統必須處于良好的狀態才能支持應用程序。通過網絡在不同服務器之間共享文件的其他設置也可能成為瓶頸。
通過文章的主觀分析,我們就LAMP得出結論:LAMP架構有Apache、MySQL 和 PHP等。
【編輯推薦】