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