左欣 林宏 王東
摘要:以Nginx/PostgreSQL為基礎(chǔ),提出基于LNPP平臺的Web開發(fā)框架,結(jié)合高校繼續(xù)教育網(wǎng)站,探討網(wǎng)站開發(fā)所涉及的開發(fā)環(huán)境、功能模塊、數(shù)據(jù)庫操作等關(guān)鍵技術(shù),為高校繼續(xù)教育網(wǎng)站建設(shè)提供參考借鑒。
關(guān)鍵詞:PHP;Nginx;PostgreSQL;繼續(xù)教育;網(wǎng)站構(gòu)建
DOIDOI:10.11907/rjdk.151844
中圖分類號:TP319
文獻標(biāo)識碼:A 文章編號文章編號:16727800(2015)008017303
0 引言
隨著社會的不斷進步,教育不斷改革,成人教育不斷拓展,原有成人教育模式已經(jīng)不能完全滿足社會需求。各高校相繼成立的繼續(xù)教育學(xué)院主要負責(zé)成人高等教育、自學(xué)考試助學(xué)、現(xiàn)代遠程網(wǎng)絡(luò)教育、教師職后培訓(xùn)以及社會培訓(xùn)等學(xué)歷教育與非學(xué)歷教育,是高等教育的重要組成部分。歷經(jīng)幾十年的發(fā)展,高校繼續(xù)教育取得了許多成功經(jīng)驗,同時也面臨著諸多挑戰(zhàn)[1]。
高校繼續(xù)教育部門網(wǎng)站,作為高校繼續(xù)教育對外展示的窗口,所面向的用戶群越來越廣泛,所承載的功能也越來越全面,不單是面向校內(nèi),同時面向社會也提供了諸多服務(wù)功能[2]。本文系統(tǒng)探討LNPP平臺開發(fā)環(huán)境搭建的關(guān)鍵技術(shù)及網(wǎng)站平臺軟件設(shè)計與開發(fā)。
1 開發(fā)環(huán)境構(gòu)建
LNPP架構(gòu),即Linux+Nginx+PostgreSQL+PHP,平臺架構(gòu)的各組成部分均為開源軟件,性能優(yōu)異,應(yīng)用廣泛。其中,以Linux為操作系統(tǒng),Nginx for Linux為Web服務(wù)器,PostgreSQL為后臺數(shù)據(jù)庫,以PHP作為服務(wù)器端腳本語言進行開發(fā)。LNPP平臺架構(gòu)如圖1所示。
1.1 LNPP平臺組成特點
LNPP平臺具有開發(fā)成本低、靈活性強、易于維護、能跨平臺移植等特點。Linux操作系統(tǒng)支持大內(nèi)存,性能強,穩(wěn)定性及安全性較好,同時規(guī)避了Windows系統(tǒng)易受到攻擊等問題。Nignx 是一個高性能的 HTTP和反向代理服務(wù)器,以穩(wěn)定性強、系統(tǒng)資源消耗低、高并發(fā)支持而聞名,目前已被國內(nèi)門戶級網(wǎng)站廣泛采用。PHP具有系統(tǒng)資源消耗低、安全性強、支持跨平臺等特點,廣泛用于Web信息系統(tǒng)開發(fā)。PostgreSQL是著名的開源數(shù)據(jù)庫,具備復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC等特性[3],是開源領(lǐng)域唯一可與Oracle、Sybase、IBM DB2 、Microsoft SQL Server等商業(yè)級數(shù)據(jù)庫相媲美的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前廣泛應(yīng)用于高校、企業(yè)、科研機構(gòu)等單位的信息系統(tǒng)中。
圖1 LNPP平臺架構(gòu)模型
1.2 LNPP與LAMP比較
與目前主流的開源網(wǎng)站開發(fā)平臺LAMP(Linux+Apache+Mysql+PHP)相比,PostgreSQL相對于Mysql更開放,具有更好的性能,適合從Oracle遷移到PostgreSQL的用戶使用。Nginx是一款高性能的Web服務(wù)器軟件,工作在網(wǎng)絡(luò)七層之上,可以針對http應(yīng)用提供分流策略。Nginx相較于Apache、lighttpd具有內(nèi)存占用少,穩(wěn)定性強等優(yōu)勢。在Linux操作系統(tǒng)下,Nginx使用epoll事件模型,Nginx在Linux操作系統(tǒng)下效率高[4],網(wǎng)絡(luò)穩(wěn)定性,通常在高并發(fā)下要比同類軟件表現(xiàn)更佳。
1.3 LNPP環(huán)境部署
(1)Linux下的Nginx安裝 。
安裝Nginx前,首先要確保系統(tǒng)安裝了g++、gcc、openssldevel、pcredevel和zlibdevel軟件。Linux環(huán)境下的yum安裝如下。
yum install pcre*
yum install gcc gccc++ ncursesdevel perl
tarzxvf nginx1.4.1.tar.gz //解壓縮源碼文件
cd nginx1.4.1
/usr/sbin/groupadd www
/usr/sbin/useraddg www www
mkdirp /opt/gznc_jjy_www
chownR www:www /opt/gznc_jjy_www
./configure --user=www --group=www --prefix=/opt/nginx --with-http_stub_status_module --with-http_flv_module --with-http_gzip_static_module
make && make install
(2)Linux下的PostgreSQL安裝。
PostgreSQL的安裝方式有3種:即RPM包安裝、yum 安裝及源碼包安裝。PostgreSQL在初始配置時依賴于兩個配置文件:postgresql.conf和pg_hba.conf。關(guān)鍵代碼如下:
chmod +x postgresql-9.2.4-1-linux-x64.run
./postgresql-9.2.4-1-linux-x64.run
按提示安裝即可
(3)Linux下的PHP安裝。
所有操作都在root用戶下執(zhí)行。
yum install jpeg* libjpeg* libpng* iconv* libiconv* freetype* gd* php-gd libxml2*// 安裝libxm12等
tar -zxvf php-5.3.25.tar.gz
php-5.3.25
./configure --prefix=/opt/php //設(shè)置php要安裝的目錄
--with-config-file-path=/opt/php/etc --with-pgsql=/opt/PostgreSQL/9.2 --with-gd --enable-gd-native-ttf --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-freetype-dir --with-iconv --enable-fpm
make && make install
cp php.ini-production /opt/php/etc/php.ini
cd /opt/php/etc/
mv php-fpm.conf.default php-fpm.conf /opt/php/sbin/php-fpm
echo "/opt/nginx/sbin/nginx" >>/etc/rc.local
echo "/opt/php/sbin/php-fpm" >>/etc/rc.local
2 網(wǎng)站功能設(shè)計與實現(xiàn)
大多繼續(xù)教育學(xué)院與其它學(xué)院一樣,都是高校下屬二級教學(xué)單位。本文以某高校繼續(xù)教育學(xué)院為例,在充分了解用戶需求的基礎(chǔ)上,確定網(wǎng)站功能及各模塊構(gòu)成,網(wǎng)站功能需求。網(wǎng)站功能結(jié)構(gòu)如圖2所示。
本網(wǎng)站包括1個門戶級網(wǎng)站及6個子站點,共同構(gòu)建一個安全、高效、易于管理與維護的Web信息系統(tǒng),系統(tǒng)網(wǎng)站后臺內(nèi)容管理系統(tǒng)易于使用,用于支撐網(wǎng)站管理與維護。
子站點分別為干部培訓(xùn)、教師培訓(xùn)、社會培訓(xùn)、成人教育、自學(xué)考試及黨建思政。分別對應(yīng)學(xué)院各業(yè)務(wù)部門和黨建工作要求。
圖2 網(wǎng)站功能結(jié)構(gòu)
干部培訓(xùn)站點主要為干部培訓(xùn)部服務(wù),該部門主要負責(zé)完成國家教育部、省教育廳以及省教育行政干部培訓(xùn)中心下達的各類教育行政干部培訓(xùn)工作,包括校長任職資格培訓(xùn)、校長提高培訓(xùn)、省名校長工程等工作。主要包括部門介紹、辦班通知、培訓(xùn)規(guī)劃、培訓(xùn)動態(tài)、培訓(xùn)研究、學(xué)習(xí)園地等功能模塊。
教師培訓(xùn)站點主要為教師培訓(xùn)部服務(wù),該部門專門負責(zé)中小學(xué)教師、班主任及幼兒教師培訓(xùn)。主要包括部門簡介、管理團隊、培訓(xùn)專家、課程介紹、實踐基地、政策法規(guī)、資源中心、培訓(xùn)研究等功能模塊。
社會培訓(xùn)站點主要為社會培訓(xùn)部服務(wù),該部門主要承擔(dān)教育部、教育廳計劃性培訓(xùn)之外的各類短期非學(xué)歷培訓(xùn)任務(wù)。主要包括部門簡介、管理團隊、培訓(xùn)動態(tài)、培訓(xùn)相冊、政策法規(guī)、資源中心、培訓(xùn)研究等功能模塊。
成人教育站點主要為成人教育部服務(wù),成人教育部具體負責(zé)繼續(xù)教育學(xué)院成人高等學(xué)歷教育的管理工作,包括招生計劃編制及招生宣傳和組織、新生錄取、報到注冊、成高學(xué)生學(xué)籍管理、畢業(yè)生學(xué)歷注冊、畢業(yè)證辦理及發(fā)放等工作。主要包括成教通知、成教簡訊、招生宣傳、工作職責(zé)、下載專區(qū)、學(xué)員風(fēng)采等功能模塊。
自學(xué)考試站點主要為自學(xué)考試部服務(wù),具體負責(zé)自學(xué)考試專業(yè)申報、招生宣傳、考生報名、考務(wù)考籍、助學(xué)管理、畢業(yè)辦證等方面的工作。主要包括機構(gòu)簡介、新聞動態(tài)、通知通告、招生信息、政策法規(guī)、網(wǎng)上咨詢、信息查詢、考生風(fēng)采等功能模塊。
黨建思政站點主要為學(xué)院黨委服務(wù),主要承擔(dān)黨委的宣傳工作。主要包括工作動態(tài)、組織建設(shè)、工青婦團、理論學(xué)習(xí)、支部生活、黨員之窗等功能模塊。
從網(wǎng)站功能來看,主要分成3類:①信息發(fā)布類,如新聞、公告及信息動態(tài)等;②信息查詢類,如教師培訓(xùn)信息、考生報考信息等信息查詢;③資源下載類,如文檔、表格等。
數(shù)據(jù)庫設(shè)計的基本任務(wù)是根據(jù)應(yīng)用目標(biāo)的信息需求和數(shù)據(jù)庫支撐環(huán)境,設(shè)計出數(shù)據(jù)庫的模式結(jié)構(gòu)和應(yīng)用程序[5]。主要數(shù)據(jù)庫表包括文章欄目表、文章內(nèi)容表。表結(jié)構(gòu)如表1、表2所示。
系統(tǒng)實現(xiàn)的關(guān)鍵是如何使用PHP讀寫PostgreSQL。在php中,用ezSQL類實現(xiàn)對PostgreSQL數(shù)據(jù)的讀寫。首先在后臺PHP頁面引入ezSQL類的核心文件:[HT5"]
include_once "../shared/ez_sql_core.php";
include_once "ez_sql_postgresql.php";
建立與數(shù)據(jù)庫的連接,并實例化ezSQL對象$db,通過調(diào)用$db的get_results方法實現(xiàn)查詢操作,調(diào)用query方法實現(xiàn)對數(shù)據(jù)的更新類操作。
$db = new ezSQL_postgresql('user','password','dbname','host');
$db->get_results($sql);
$db->query($sql);
在網(wǎng)站系統(tǒng)的管理權(quán)限方面,分為系統(tǒng)管理員及子站點管理員兩類。網(wǎng)站各子站點管理員由系統(tǒng)管理員進行添加與維護,各子站點管理員負責(zé)各自部門網(wǎng)站維護。系統(tǒng)管理員可同時將同一信息發(fā)布到不同的子站點。
3 結(jié)語
本文系統(tǒng)支持跨平臺,安全性能可靠,經(jīng)投入使用,系統(tǒng)維護簡單、效果良好,保證了網(wǎng)站在高負載下保持穩(wěn)定運行。利用開源、免費、高效的LNPP技術(shù)架構(gòu)開發(fā)Web系統(tǒng)是可行的。LNPP技術(shù)不僅能滿足系統(tǒng)性能要求,而且能適應(yīng)大訪問量的需要,保證系統(tǒng)在重負荷下保持穩(wěn)定運行,同時具有良好的擴充性和可維護性,為類似系統(tǒng)開發(fā)提供一定參考和借鑒。
參考文獻:
[1] 刁慶軍,周曉婭,吳志勇.我國高校繼續(xù)教育辦學(xué)的現(xiàn)狀[J].中國遠程教育,2013(10):12.
[2] 趙越.高校網(wǎng)站建設(shè)及管理存在的問題與對策[J].產(chǎn)業(yè)與科技論壇,2011(2):212213.
[3] 劉鑫. MySQL和PostgreSQL的對比選擇[J].沈陽工程學(xué)院學(xué)報:自然科學(xué)版,2011(2):171173.
[4] 左欣.基于PHP+Nginx高負載查詢打印系統(tǒng)的構(gòu)建[J].貴州師范學(xué)院學(xué)報,2015.
[5] SUZUMURA T,TRENT S,TATSUBORI M,et al.Performance comparison of Web service engines in PHP,Java and C[C].Japan: IEEE International Conference on Web Services,2008:385392.
(責(zé)任編輯:陳福時)