(一)LNMP
LNMP 的通用含義是:Linux 系統(tǒng)下 Nginx + MySQL + Perl/PHP/Python 這種動(dòng)態(tài)網(wǎng)站服務(wù)器架構(gòu)。
LAMP中的4個(gè)軟件均為免費(fèi)開源軟件。組合在一起,形成了一個(gè)免費(fèi)、高效、擴(kuò)展的動(dòng)態(tài)網(wǎng)站服務(wù)系統(tǒng)。
1、 Linux 是類 Unix 計(jì)算機(jī)操作系統(tǒng)的統(tǒng)稱,是目前最流行的免費(fèi)操作系統(tǒng)。代表版本有:debian、centos、ubuntu、fedora、gentoo 等。
2、 Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。
Nginx 是一款小巧且高效的 Linux下 Web 服務(wù)器軟件。由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler 站點(diǎn)開發(fā),已在一些俄羅斯大型網(wǎng)站上運(yùn)行多年,相當(dāng)穩(wěn)定。第一公開版本 0.1.0 發(fā)布于 2004 年 10 月 4 日。2011 年 6 月 1 日,nginx 1.0.4 發(fā)布。
Nginx 性能穩(wěn)定、功能豐富、運(yùn)維簡單、處理靜態(tài)文件速度快且消耗系統(tǒng)資源極少。
1、相比 Apache,用 Nginx 作為 Web 服務(wù)器:使用資源更少,支持更多并發(fā)連接,效率更高。
2、作為負(fù)載均衡服務(wù)器:Nginx 既可在內(nèi)部直接支持 Rails 和 PHP,也可支持作為 HTTP 代理服務(wù)器對外進(jìn)行服務(wù)。Nginx 用 C 編寫而成,不論是系統(tǒng)資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。
3、作為郵件代理服務(wù)器:Nginx 同時(shí)也是一款非常優(yōu)秀的郵件代理服務(wù)器(最早開發(fā)這個(gè)產(chǎn)品的目的之一,是作為郵件代理服務(wù)器)。Nginx 的安裝非常簡單,配置文件也很簡潔(還支持 perl 語法)。Nginx 支持平滑加載新配置,還能夠在不間斷服務(wù)的情況下進(jìn)行軟件版本升級(jí)。?
3、 Mysql 是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。
4、 PHP 是一種在服務(wù)器端執(zhí)行的嵌入 HTML 文檔的腳本語言。
Python(英語發(fā)音:/?pa?θ?n/)是一種面向?qū)ο?、解釋型?jì)算機(jī)程序設(shè)計(jì)語言,由 Guido van Rossum 于 1989 年底發(fā)明,第一個(gè)公開發(fā)行版發(fā)行于 1991 年。Python 語法簡潔而清晰,具有豐富和強(qiáng)大的類庫。它常被昵稱為膠水語言,它能夠把用其他語言制作的各種模塊(尤其是 C/C++)很輕松地聯(lián)結(jié)在一起。
Perl 最初的設(shè)計(jì)者為拉里·沃爾(Larry Wall),他于 1987 年 12 月 18 日發(fā)表。Perl 借用了 C、sed、awk、shell scripting 以及很多其他程序語言的特性。其中最重要的特性是它內(nèi)部集成了正則表達(dá)式的功能,以及巨大的第三方代碼庫 CPAN。
(二)LAMP?
LAMP 的通用含義是:Linux 系統(tǒng)下 Apache + MySQL + Perl/PHP/Python 這種動(dòng)態(tài)網(wǎng)站服務(wù)器架構(gòu)。
隨著開源潮流的蓬勃發(fā)展,開放源代碼的 LAMP 早已與 J2EE 和 .Net 商業(yè)軟件形成三足鼎立之勢。且該架構(gòu)開發(fā)的項(xiàng)目在軟件方面的投資成本極低,因此受到整個(gè) IT 界的高度關(guān)注。從網(wǎng)站流量上說,70% 以上的訪問流量都是 LAMP 提供的。所以說,LAMP 是最強(qiáng)大的動(dòng)態(tài)網(wǎng)站解決方案。
Apache 特性
Apache 是 LAMP 架構(gòu)最核心的 Web Server,開源、穩(wěn)定、模塊豐富是 Apache 的優(yōu)勢。但 Apache 的缺點(diǎn)是有些臃腫,內(nèi)存和 CPU 開銷大,性能上有損耗,不如一些輕量級(jí)的 Web 服務(wù)器(譬如:Nginx)高效,輕量級(jí)的 Web 服務(wù)器對于靜態(tài)文件的響應(yīng)能力來說遠(yuǎn)高于 Apache 服務(wù)器。
Apache 做為 Web Server 是負(fù)載 PHP 的最佳選擇,如果流量很大的話,可以采用 Nginx 來負(fù)載非 PHP 的 Web 請求。Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,Nginx 以其穩(wěn)定、豐富功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。Nginx 現(xiàn)能支持 PHP 和 FastCGI,也支持負(fù)載均衡和容錯(cuò),可和 Apache 配合使用,是輕量級(jí)的 HTTP 服務(wù)器的首選。
Web 服務(wù)器緩存也有多種方案,Apache 提供了自己的緩存模塊,也可以使用外加的 Squid 模塊進(jìn)行緩存,這兩種方式均可有效提高 Apache 的訪問響應(yīng)能力。Squid Cache 是一個(gè) Web 緩存服務(wù)器,支持高效緩存,可作為網(wǎng)頁服務(wù)器的前置 cache 服務(wù)器緩存相關(guān)請求以提高 Web 服務(wù)器速度。把 Squid 放在 Apache 的前端來緩存 Web 服務(wù)器生成動(dòng)態(tài)內(nèi)容,而 Web 應(yīng)用程序只需要適當(dāng)?shù)卦O(shè)置頁面實(shí)效時(shí)間即可。如訪問量巨大,則可考慮使用 memcache 作為分布式緩存。
PHP 的加速可使用 eAccelerator 加速器,eAccelerator 是一個(gè)自由開放源碼的 PHP 加速器。它會(huì)優(yōu)化動(dòng)態(tài)內(nèi)容緩存,提高 PHP 腳本緩存性能,使 PHP 腳本在編譯狀態(tài)下,對服務(wù)器的開銷幾乎完全消除。它還可對腳本起優(yōu)化作用,以加快其執(zhí)行效率。 使 PHP 程序代碼執(zhí)效率可提高 1-10 倍。
具體動(dòng)態(tài)網(wǎng)站服務(wù)器架構(gòu)解決方案有以下幾種:
1、 squid + Apache + PHP + eAccelerator
使用 Apache 負(fù)載 PHP,squid 緩存,HTML 或圖片請求可直接由 squid 返回給用戶。很多大型網(wǎng)站都采用這種架構(gòu)。
2、 Nginx/Apache + PHP(FastCGI) + eAccelerator
使用 Nginx 或 Apache 負(fù)載 PHP,PHP 使用 FastCGI 方式運(yùn)行,效率較高。
3、 Nginx + Apache + PHP + eAccelerator
此方案綜合了 Nginx 和 Apache 的優(yōu)點(diǎn),使用 Apache 負(fù)載 PHP,nginx 負(fù)責(zé)解析其它 Web 請求,使用 Nginx 的 rewrite 模塊,Apache 端口不對外開放。
數(shù)據(jù)庫
開源數(shù)據(jù)庫中,MySQL 在性能、穩(wěn)定性及功能上是首選,可以達(dá)到百萬級(jí)別的數(shù)據(jù)存儲(chǔ)。網(wǎng)站初期可將 MySQL 和 Web 服務(wù)器放在一起,但是當(dāng)訪問量達(dá)到一定規(guī)模后,應(yīng)該將 MySQL 數(shù)據(jù)庫從 Web Server 上獨(dú)立出來,在單獨(dú)的服務(wù)器上運(yùn)行,同時(shí)保持 Web Server 和 MySQL 服務(wù)器的穩(wěn)定連接。