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