陳鐳
摘 要: 伴隨數(shù)字化、網(wǎng)絡(luò)化的快速發(fā)展,高校內(nèi)涌現(xiàn)出眾多的Web系統(tǒng),這些Web系統(tǒng)參差不齊,安全性、易用性、可靠性等無法得到保障。把LAMP架構(gòu)與LNMP架構(gòu)各自的優(yōu)點(diǎn)結(jié)合在一起形成新的網(wǎng)站服務(wù)器架構(gòu)LNMPA,分析了該架構(gòu)的特點(diǎn)及優(yōu)勢。采用基于MVC設(shè)計模式的ThinkPHP框架設(shè)計并實現(xiàn)了一套通用Web系統(tǒng),該系統(tǒng)具備成本低、擴(kuò)展靈活、性能穩(wěn)定、數(shù)據(jù)安全、抗并發(fā)能力強(qiáng)等顯著特點(diǎn)。
關(guān)鍵詞: Web系統(tǒng); LAMP架構(gòu); LNMP架構(gòu); LNMPA架構(gòu); ThinkPHP框架
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2014)08-22-02
Design and implementation of Web system based on LNMPA architecture
Chen Lei
(Dept. of Library, Nanjing Audit University, Nanjing, Jiangsu 211815, China)
Abstract: With the rapid development of digital and networking, Web systems emerges in universities. However, these Web systems cannot guarantee the safety, convenience and reliability. In this paper, a new web server architecture LNMPA is created by the combination of the LAMP architecture and LNMP architecture. The characteristics and advantages of the architecture are analyzed. A general Web system based on MVC design model ThinkPHP framework is designed and implemented. It has advantages including low cost, high flexibility, stable performance, data security, anti-concurrent capacity.
Key words: Web system; LAMP architecture; LNMP architecture; LNMPA architecture; ThinkPHP framework
0 引言
伴隨著計算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,高校內(nèi)涌現(xiàn)出各類信息平臺和應(yīng)用系統(tǒng)。目前流行的眾多Web系統(tǒng)平臺無外乎有三類:ASP.NET(微軟.NET下Web開發(fā))平臺、J2EE(Java企業(yè)級開發(fā))平臺和LAMP(Linux+Apache+MySQL+PHP)平臺。因LAMP平臺具有操作簡易、成本低、擴(kuò)展靈活、安全等特點(diǎn)和優(yōu)勢,其應(yīng)用范圍越來越廣,從簡單的、中小型應(yīng)用擴(kuò)展到復(fù)雜的、大型的系統(tǒng)應(yīng)用中,逐漸成為一種發(fā)展趨勢,已經(jīng)與J2EE平臺和ASP.NET商業(yè)軟件平臺并駕齊驅(qū)。越來越多的用戶、供應(yīng)商和投資者意識到,使用LAMP開源軟件平臺構(gòu)建、運(yùn)行各種網(wǎng)絡(luò)應(yīng)用變得更加具有競爭優(yōu)勢。無論從質(zhì)量、性能,還是價格考慮,LAMP平臺都將成為高校信息化發(fā)展過程中所必須關(guān)注的。
1 LNMPA架構(gòu)簡介
LNMPA是Linux,Nginx,MySQL,PHP和Apache組合而成的開放資源網(wǎng)絡(luò)平臺。
Linux是一套開源免費(fèi)和自由傳播的操作系統(tǒng),是一個基于UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),是目前最流行的免費(fèi)操作系統(tǒng)。代表版本有:centos、ubuntu、fedora等。
Nginx是一個小巧而高性能的HTTP和反向代理服務(wù)器,消耗資源少,支持并發(fā)連接數(shù)目多,反向代理效率高、靜態(tài)文件處理快。因其穩(wěn)定、功能豐富和低資源消耗而聞名。
MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫將數(shù)據(jù)存在不同的表中,增加了存取速度、提高了靈活性,MySQL用的是標(biāo)準(zhǔn)化SQL查詢語言。由于其體積小、速度快、成本低,開放源代碼,一般情況下中小型系統(tǒng)都愿意選擇MySQL作為數(shù)據(jù)庫系統(tǒng)。
PHP是目前最流行的編程腳本語言之一,簡單,輕便,開源免費(fèi)并且功能強(qiáng)大。PHP支持各種主流數(shù)據(jù)庫,如MS SQL,Orcale,MySQL等,具有很好的跨平臺性,對Windows以及Linux有很好支持,不同平臺間代碼轉(zhuǎn)移也十分簡便。同時PHP有著成熟的面向?qū)ο篌w系,能適應(yīng)大型項目的開發(fā)。
Apache(Apache HTTP Server)是Apache軟件基金會的一個開放源碼的Web服務(wù)器,可以在大多數(shù)的操作系統(tǒng)上運(yùn)行,它快速、可靠,可通過簡單的模塊進(jìn)行擴(kuò)展,也可作為代理服務(wù)器來使用,因其開放源代碼,不斷有人完善新功能、新特性,Apache是目前最流行的Web服務(wù)器軟件。
雖然這些開放源代碼程序本身并不是專門設(shè)計成同另幾個程序一起工作的,但由于它們均免費(fèi)開源,影響較大,擁有很多共同特點(diǎn),就導(dǎo)致了這些組件經(jīng)常在一起使用,可構(gòu)建出低成本、高效、擴(kuò)展性強(qiáng)的LNMPA網(wǎng)站服務(wù)器架構(gòu)。
2 LNMPA架構(gòu)詳解
LAMP[1]或LNMP[2]的劣勢:Nginx是小巧而高效的Linux下Web服務(wù)器,跟Apache相比,它消耗資源更少,支持的并發(fā)連接更多,反向代理功能效率高、靜態(tài)文件處理更快等等,Nginx可以承受3萬以上的并發(fā)連接數(shù),相當(dāng)于同等環(huán)境下Apache的10倍[3],但是它的動態(tài)頁面處理能力不如Apache軟件成熟。單獨(dú)使用Nginx處理大量動態(tài)頁面時易產(chǎn)生502錯誤,而Apache在高并發(fā)時對隊列的處理比FastCGI更加穩(wěn)定,Apache的mod_php效率比php-cgi更高且更成熟,對偽靜態(tài)支持也好,但是單獨(dú)使用Apache處理靜態(tài)頁面時,對內(nèi)存的占用率會遠(yuǎn)遠(yuǎn)超過Nginx。
LNMPA[4]網(wǎng)站服務(wù)器架構(gòu),正是把LAMP與LNMP各自的優(yōu)點(diǎn)結(jié)合在一起而產(chǎn)生的新的網(wǎng)站服務(wù)器架構(gòu)。圖1中的LNMPA架構(gòu)把Nginx當(dāng)作前端服務(wù)器,它能夠更快、更及時、使用更少系統(tǒng)資源來處理靜態(tài)頁面、圖片、js等文件,當(dāng)客戶端請求訪問的是動態(tài)頁面時,再由Nginx反向代理給后端服務(wù)器Apache處理,Apache把處理好的結(jié)果再返回給Nginx。采用LNMPA架構(gòu)更好地解決LNMP中由于PHP-FPM方面頻繁產(chǎn)生的502錯誤,同時又能夠以簡單的方式提供安全的多用戶、多站點(diǎn)環(huán)境,完全結(jié)合了兩種架構(gòu)的優(yōu)點(diǎn)。
3 Web系統(tǒng)的設(shè)計與實現(xiàn)
3.1 ThinkPHP框架
ThinkPHP[5]是一個簡單、快速、兼容的輕量級PHP開發(fā)框架,遵循Apache2開源協(xié)議,主要是從Struts結(jié)構(gòu)移植并做了改進(jìn)、完善,同時也借鑒了其他優(yōu)秀框架和模式,使用面向?qū)ο蠛蚆VC三層架構(gòu)模式,繼承了Struts的思想和標(biāo)簽庫、RoR的ORM映射還有ActiveRecord模式,封裝了CURD操作和其他常用功能,采用單一入口模式,在緩存機(jī)制、模版引擎、認(rèn)證機(jī)制和擴(kuò)展方面等均有獨(dú)特的表現(xiàn)。
ThinkPHP能夠作為一整套開發(fā)解決方案,可以滿足開發(fā)中的大多數(shù)需求,其自身包含了底層架構(gòu)、基類庫、數(shù)據(jù)庫訪問層、兼容處理、緩存機(jī)制、模板引擎、插件機(jī)制、角色認(rèn)證、表單處理等常用的功能組件,并且跨平臺、跨版本,數(shù)據(jù)庫移植也比較方便,每個組件都經(jīng)過精心設(shè)計和完善,使用者在應(yīng)用開發(fā)過程中只需要關(guān)注業(yè)務(wù)邏輯。
3.2 總體設(shè)計
MVC的核心思想是將應(yīng)用程序的表現(xiàn)層和邏輯層進(jìn)行分離。ThinkPHP是基于MVC設(shè)計模式的,MVC是一個抽象的概念,沒有十分明確的規(guī)定,ThinkPHP中的MVC分層次大致表現(xiàn)為:模型(M),模型的定義由Model層來完成??刂破鳎–),應(yīng)用控制器,核心控制器和Action控制器都承擔(dān)了控制器的角色,Action控制器完成業(yè)務(wù)邏輯控制,應(yīng)用控制器負(fù)責(zé)調(diào)度控制。視圖(V),由模板文件和View類組成,模板做到了完全和業(yè)務(wù)邏輯分離,可以獨(dú)立的制作和預(yù)覽。
一個完整的Web網(wǎng)站系統(tǒng)通常由前臺部分和后臺部分組成,前臺為內(nèi)容展示和業(yè)務(wù)實現(xiàn)部分,后臺為系統(tǒng)管理部分。系統(tǒng)按模塊劃分又可以分為:登錄模塊、權(quán)限管理模塊,內(nèi)容管理模塊、用戶管理模塊、菜單管理模塊、搜索模塊等等,不同模塊由不同功能的頁面組成。系統(tǒng)登錄時自動進(jìn)行身份識別,按照訪問者的身份進(jìn)入其相應(yīng)的操作界面,管理員進(jìn)入管理界面,用戶進(jìn)入用戶界面。
用戶等級一般分為三類,其中管理員帳號擁有最高權(quán)限,高級用戶其次,擁有部分的管理權(quán)限,普通用戶的權(quán)限最低。
設(shè)計權(quán)限管理的步驟如下:判斷當(dāng)前模塊的當(dāng)前操作是否需要認(rèn)證;如果需要認(rèn)證并且尚未登錄,則跳到認(rèn)證網(wǎng)關(guān);如果已經(jīng)登錄,則判斷當(dāng)前用戶是否具有訪問權(quán)限;通過委托認(rèn)證進(jìn)行用戶身份認(rèn)證;獲取用戶的決策訪問列表。
內(nèi)容管理模塊可概括為對數(shù)據(jù)庫的四個基本操作(CURD):創(chuàng)建、更新、讀取和刪除。CURD操作和連貫操作配合可變幻出更多的業(yè)務(wù)邏輯操作,從而實現(xiàn)Web系統(tǒng)豐富完善的功能。
菜單管理模塊是一個Web系統(tǒng)必不可少的部分,管理員、用戶根據(jù)需求定制一級菜單及其子菜單。
搜索是Web系統(tǒng)常見功能之一。搜索功能可實現(xiàn)對網(wǎng)站內(nèi)容的檢索、迅速定位,高級檢索功能支持根據(jù)標(biāo)題、創(chuàng)建時間、修改時間、發(fā)布人等條件精確篩選網(wǎng)站內(nèi)容。
3.3 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫是整個系統(tǒng)應(yīng)用的根基,是軟件設(shè)計的起點(diǎn),它起著決定性的作用,好的數(shù)據(jù)庫設(shè)計要遵循以下幾個原則。
⑴ 充分體現(xiàn)系統(tǒng)的需求,數(shù)據(jù)庫首先是為應(yīng)用服務(wù)的,數(shù)據(jù)庫設(shè)計應(yīng)該能滿足應(yīng)用系統(tǒng)的業(yè)務(wù)需求,準(zhǔn)確地表達(dá)數(shù)據(jù)與數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。
⑵ 保證數(shù)據(jù)的準(zhǔn)確性、一致性,通過主鍵、外鍵、非空、限制、惟一索引等保證數(shù)據(jù)的健壯。
⑶ 提高數(shù)據(jù)的查詢效率,通過合理表結(jié)構(gòu),安排物理存儲分區(qū)、增加索引等方式,提高數(shù)據(jù)的讀取速度,提高數(shù)據(jù)查詢的效率。
⑷ 有良好的擴(kuò)展性能,在必要的時侯能根據(jù)需求擴(kuò)展數(shù)據(jù)結(jié)構(gòu)。
4 結(jié)束語
本文比較并分析了LAMP架構(gòu)和LNMP的優(yōu)缺點(diǎn),重點(diǎn)介紹了新的LNMPA架構(gòu)Web系統(tǒng)的特性及其優(yōu)勢,設(shè)計并實現(xiàn)了一套通用Web系統(tǒng)。從部署以后長期運(yùn)行的效果看,該系統(tǒng)穩(wěn)定、安全、抗并發(fā)能力突出,適用性廣泛。因LNMPA架構(gòu)具備開源免費(fèi),綜合成本低廉的特性,在高校Web應(yīng)用系統(tǒng)中具有很大的推廣空間。
參考文獻(xiàn):
[1] 周珊.基于LAMP架構(gòu)的高校學(xué)生工作考核系統(tǒng)設(shè)計與實現(xiàn)[D].電
子科技大學(xué)碩士學(xué)位論文,2013.
[2] 曾棕根.一種基于LNMP的Moodle 2分布式計算架構(gòu)[J].計算機(jī)時
代,2013.6:5-8
[3] 凌質(zhì)億,劉哲星,曹蕾.高并發(fā)環(huán)境下Apache與Nginx的I/O性能比
較[J].計算機(jī)系統(tǒng)應(yīng)用,2013.6:204-208
[4] LNMPA[EB/OL]. fr=aladdin>. [5] 楊浩.基于ThinkPhp框架的校園網(wǎng)絡(luò)設(shè)備管理系統(tǒng)設(shè)計與實現(xiàn)[D]. 西北大學(xué)碩士學(xué)位論文,2012.