LAMP解決方案

akbarken發表於2014-09-11
LAMP網站架構方案
LAMP(Linux- Apache-MySQL-PHP)網站架構是目前國際流行的Web框架,
該框架包括:Linux作業系統,Apache網路伺服器,MySQL資料庫,Perl、PHP或者Python程式語言,

優勢:
和 Java/J2EE架構相比,LAMP具有Web資源豐富、輕量、快速開發等特點,微軟的.NET架構相比,LAMP具有通用、跨平臺、高效能、低價格的 優勢,因此LAMP無論是效能、質量還是價格都是企業搭建網站的首選平臺。

對於大流量、大併發量的網站系統架構來說:
硬體上使用高效能的伺服器、負載均衡、CDN等,
在軟體架構上:使用高效能的作業系統(OS)、高效能的網頁伺服器(Web Server)、高效能的資料庫(Database)、高效率的程式語言等。

下面我將從這幾點對其一一討論:

作業系統
免費的高度穩定性的伺服器可以用CentOS

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

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

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

PHP的加速:
使用eAccelerator加速器,eAccelerator是一個自由開放原始碼PHP加速器,優化和動 態內容快取,提高了效能PHP指令碼的快取效能,使得PHP指令碼在編譯的狀態下,對伺服器的開銷幾乎完全消除。它還有對指令碼起優化作用,以加快其執行效率。 使PHP程式程式碼執效率能提高1-10倍。
具體的解決方案有以下幾種:
1、squid + Apache + PHP + eAccelerator
使用Apache負載PHP,使用squid進行快取,html或圖片的請求可以直接由squid返回給使用者。很多大型網站都採用這種架構。
2、nginx/Apache + PHP(fastcgi) + eAccelerator
使用nginx或Apache負載PHP,PHP使用fastcgi方式執行,效率較高。
3、nginx + Apache + PHP + eAccelerator
此方案綜合了nginx和Apache的優點,使用Apache負載PHP,nginx負責解析其他Web請求,使用nginx的rewrite模組,Apache埠不對外開放。

資料庫
開源的資料庫中,MySQL在效能、穩定性和功能上是首選,可以達到百萬級別的資料儲存,網站初期可以將MySQL和Web伺服器放在一起

當訪問量達到一定規模後,應該將MySQL資料庫從WebServer上獨立出來,在單獨的伺服器上執行,同時保持WebServer和MySQL伺服器的穩定連線。
當資料庫訪問量達到更大的級別,可以考慮使用MySQL Cluster等資料庫叢集或者庫表雜湊等解決方案。

相關文章