LAMP(Linux-Apache-MySQL-PHP)網站架構是目前國際流行的Web框架,該框架包括:Linux操做系統,Apache網絡服務器,MySQL數據庫,Perl、PHP或者Python編程語言,全部組成產品均是開源軟件,是國際上成熟的架構框架,不少流行的商業應用都是採起這個架構,和Java/J2EE架構相比,LAMP具備Web資源豐富、輕量、快速開發等特色,微軟的.NET架構相比,LAMP具備通用、跨平臺、高性能、低價格的優點,所以LAMP不管是性能、質量仍是價格都是企業搭建網站的首選平臺。html
對於大流量、大併發量的網站系統架構來講,除了硬件上使用高性能的服務器、負載均衡、CDN等以外,在軟件架構上須要重點關注下面幾個環節:使用高性能的操做系統(OS)、高性能的網頁服務器(Web Server)、高性能的數據庫(Databse)、高效率的編程語言等。下面我將從這幾點對其一一討論。前端
操做系統nginx
Linux操做系統有不少個不一樣的發行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、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使用。編程
LAMP網站架構圖緩存
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加速器,eAccelerator是一個自由開放源碼PHP加速器,優化和動態內容緩存,提升了性能PHP腳本的緩存性能,使得PHP腳本在編譯的狀態下,對服務器的開銷幾乎徹底消除。它還有對腳本起優化做用,以加快其執行效率。使PHP程序代碼執效率能提升1-10倍。
具體的解決方案有如下幾種:
一、squid + Apache + PHP + eAccelerator
使用Apache負載PHP,使用squid進行緩存,html或圖片的請求能夠直接由squid返回給用戶。不少大型網站都採用這種架構。
二、nginx/Apache + PHP(fastcgi) + eAccelerator
使用nginx或Apache負載PHP,PHP使用fastcgi方式運行,效率較高。
三、nginx + Apache + PHP + eAccelerator
此方案綜合了nginx和Apache的優勢,使用Apache負載PHP,nginx負責解析其餘Web請求,使用nginx的rewrite模塊,Apache端口不對外開放。
數據庫
開源的數據庫中,MySQL在性能、穩定性和功能上是首選,能夠達到百萬級別的數據存儲,網站初期能夠將MySQL和Web服務器放在一塊兒,可是當訪問量達到必定規模後,應該將MySQL數據庫從Web Server上獨立出來,在單獨的服務器上運行,同時保持Web Server和MySQL服務器的穩定鏈接。
當數據庫訪問量達到更大的級別,能夠考慮使用MySQL Cluster等數據庫集羣或者庫表散列等解決方案。
總的來講,LAMP架構的網站性能會遠遠優於Windows IIS + ASP + Access(例如月光博客)這樣的網站,能夠負載的訪問量也很是大,國內的大量我的網站若是想要支撐大訪問量,採用LAMP架構是一個不錯的方案。
綜上所述,基於LAMP架構設計具備成本低廉、部署靈活、快速開發、安全穩定等特色,是Web網絡應用和環境的優秀組合。