左欣 林宏 王東
摘要:以Nginx/PostgreSQL為基礎(chǔ),提出基于LNPP平臺(tái)的Web開(kāi)發(fā)框架,結(jié)合高校繼續(xù)教育網(wǎng)站,探討網(wǎng)站開(kāi)發(fā)所涉及的開(kāi)發(fā)環(huán)境、功能模塊、數(shù)據(jù)庫(kù)操作等關(guān)鍵技術(shù),為高校繼續(xù)教育網(wǎng)站建設(shè)提供參考借鑒。
關(guān)鍵詞:PHP;Nginx;PostgreSQL;繼續(xù)教育;網(wǎng)站構(gòu)建
DOIDOI:10.11907/rjdk.151844
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):16727800(2015)008017303
0 引言
隨著社會(huì)的不斷進(jìn)步,教育不斷改革,成人教育不斷拓展,原有成人教育模式已經(jīng)不能完全滿足社會(huì)需求。各高校相繼成立的繼續(xù)教育學(xué)院主要負(fù)責(zé)成人高等教育、自學(xué)考試助學(xué)、現(xiàn)代遠(yuǎn)程網(wǎng)絡(luò)教育、教師職后培訓(xùn)以及社會(huì)培訓(xùn)等學(xué)歷教育與非學(xué)歷教育,是高等教育的重要組成部分。歷經(jīng)幾十年的發(fā)展,高校繼續(xù)教育取得了許多成功經(jīng)驗(yàn),同時(shí)也面臨著諸多挑戰(zhàn)[1]。
高校繼續(xù)教育部門網(wǎng)站,作為高校繼續(xù)教育對(duì)外展示的窗口,所面向的用戶群越來(lái)越廣泛,所承載的功能也越來(lái)越全面,不單是面向校內(nèi),同時(shí)面向社會(huì)也提供了諸多服務(wù)功能[2]。本文系統(tǒng)探討LNPP平臺(tái)開(kāi)發(fā)環(huán)境搭建的關(guān)鍵技術(shù)及網(wǎng)站平臺(tái)軟件設(shè)計(jì)與開(kāi)發(fā)。
1 開(kāi)發(fā)環(huán)境構(gòu)建
LNPP架構(gòu),即Linux+Nginx+PostgreSQL+PHP,平臺(tái)架構(gòu)的各組成部分均為開(kāi)源軟件,性能優(yōu)異,應(yīng)用廣泛。其中,以Linux為操作系統(tǒng),Nginx for Linux為Web服務(wù)器,PostgreSQL為后臺(tái)數(shù)據(jù)庫(kù),以PHP作為服務(wù)器端腳本語(yǔ)言進(jìn)行開(kāi)發(fā)。LNPP平臺(tái)架構(gòu)如圖1所示。
1.1 LNPP平臺(tái)組成特點(diǎn)
LNPP平臺(tái)具有開(kāi)發(fā)成本低、靈活性強(qiáng)、易于維護(hù)、能跨平臺(tái)移植等特點(diǎn)。Linux操作系統(tǒng)支持大內(nèi)存,性能強(qiáng),穩(wěn)定性及安全性較好,同時(shí)規(guī)避了Windows系統(tǒng)易受到攻擊等問(wèn)題。Nignx 是一個(gè)高性能的 HTTP和反向代理服務(wù)器,以穩(wěn)定性強(qiáng)、系統(tǒng)資源消耗低、高并發(fā)支持而聞名,目前已被國(guó)內(nèi)門戶級(jí)網(wǎng)站廣泛采用。PHP具有系統(tǒng)資源消耗低、安全性強(qiáng)、支持跨平臺(tái)等特點(diǎn),廣泛用于Web信息系統(tǒng)開(kāi)發(fā)。PostgreSQL是著名的開(kāi)源數(shù)據(jù)庫(kù),具備復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC等特性[3],是開(kāi)源領(lǐng)域唯一可與Oracle、Sybase、IBM DB2 、Microsoft SQL Server等商業(yè)級(jí)數(shù)據(jù)庫(kù)相媲美的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),目前廣泛應(yīng)用于高校、企業(yè)、科研機(jī)構(gòu)等單位的信息系統(tǒng)中。
圖1 LNPP平臺(tái)架構(gòu)模型
1.2 LNPP與LAMP比較
與目前主流的開(kāi)源網(wǎng)站開(kāi)發(fā)平臺(tái)LAMP(Linux+Apache+Mysql+PHP)相比,PostgreSQL相對(duì)于Mysql更開(kāi)放,具有更好的性能,適合從Oracle遷移到PostgreSQL的用戶使用。Nginx是一款高性能的Web服務(wù)器軟件,工作在網(wǎng)絡(luò)七層之上,可以針對(duì)http應(yīng)用提供分流策略。Nginx相較于Apache、lighttpd具有內(nèi)存占用少,穩(wěn)定性強(qiáng)等優(yōu)勢(shì)。在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在初始配置時(shí)依賴于兩個(gè)配置文件: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è)計(jì)與實(shí)現(xiàn)
大多繼續(xù)教育學(xué)院與其它學(xué)院一樣,都是高校下屬二級(jí)教學(xué)單位。本文以某高校繼續(xù)教育學(xué)院為例,在充分了解用戶需求的基礎(chǔ)上,確定網(wǎng)站功能及各模塊構(gòu)成,網(wǎng)站功能需求。網(wǎng)站功能結(jié)構(gòu)如圖2所示。
本網(wǎng)站包括1個(gè)門戶級(jí)網(wǎng)站及6個(gè)子站點(diǎn),共同構(gòu)建一個(gè)安全、高效、易于管理與維護(hù)的Web信息系統(tǒng),系統(tǒng)網(wǎng)站后臺(tái)內(nèi)容管理系統(tǒng)易于使用,用于支撐網(wǎng)站管理與維護(hù)。
子站點(diǎn)分別為干部培訓(xùn)、教師培訓(xùn)、社會(huì)培訓(xùn)、成人教育、自學(xué)考試及黨建思政。分別對(duì)應(yīng)學(xué)院各業(yè)務(wù)部門和黨建工作要求。
圖2 網(wǎng)站功能結(jié)構(gòu)
干部培訓(xùn)站點(diǎn)主要為干部培訓(xùn)部服務(wù),該部門主要負(fù)責(zé)完成國(guó)家教育部、省教育廳以及省教育行政干部培訓(xùn)中心下達(dá)的各類教育行政干部培訓(xùn)工作,包括校長(zhǎng)任職資格培訓(xùn)、校長(zhǎng)提高培訓(xùn)、省名校長(zhǎng)工程等工作。主要包括部門介紹、辦班通知、培訓(xùn)規(guī)劃、培訓(xùn)動(dòng)態(tài)、培訓(xùn)研究、學(xué)習(xí)園地等功能模塊。
教師培訓(xùn)站點(diǎn)主要為教師培訓(xùn)部服務(wù),該部門專門負(fù)責(zé)中小學(xué)教師、班主任及幼兒教師培訓(xùn)。主要包括部門簡(jiǎn)介、管理團(tuán)隊(duì)、培訓(xùn)專家、課程介紹、實(shí)踐基地、政策法規(guī)、資源中心、培訓(xùn)研究等功能模塊。
社會(huì)培訓(xùn)站點(diǎn)主要為社會(huì)培訓(xùn)部服務(wù),該部門主要承擔(dān)教育部、教育廳計(jì)劃性培訓(xùn)之外的各類短期非學(xué)歷培訓(xùn)任務(wù)。主要包括部門簡(jiǎn)介、管理團(tuán)隊(duì)、培訓(xùn)動(dòng)態(tài)、培訓(xùn)相冊(cè)、政策法規(guī)、資源中心、培訓(xùn)研究等功能模塊。
成人教育站點(diǎn)主要為成人教育部服務(wù),成人教育部具體負(fù)責(zé)繼續(xù)教育學(xué)院成人高等學(xué)歷教育的管理工作,包括招生計(jì)劃編制及招生宣傳和組織、新生錄取、報(bào)到注冊(cè)、成高學(xué)生學(xué)籍管理、畢業(yè)生學(xué)歷注冊(cè)、畢業(yè)證辦理及發(fā)放等工作。主要包括成教通知、成教簡(jiǎn)訊、招生宣傳、工作職責(zé)、下載專區(qū)、學(xué)員風(fēng)采等功能模塊。
自學(xué)考試站點(diǎn)主要為自學(xué)考試部服務(wù),具體負(fù)責(zé)自學(xué)考試專業(yè)申報(bào)、招生宣傳、考生報(bào)名、考務(wù)考籍、助學(xué)管理、畢業(yè)辦證等方面的工作。主要包括機(jī)構(gòu)簡(jiǎn)介、新聞動(dòng)態(tài)、通知通告、招生信息、政策法規(guī)、網(wǎng)上咨詢、信息查詢、考生風(fēng)采等功能模塊。
黨建思政站點(diǎn)主要為學(xué)院黨委服務(wù),主要承擔(dān)黨委的宣傳工作。主要包括工作動(dòng)態(tài)、組織建設(shè)、工青婦團(tuán)、理論學(xué)習(xí)、支部生活、黨員之窗等功能模塊。
從網(wǎng)站功能來(lái)看,主要分成3類:①信息發(fā)布類,如新聞、公告及信息動(dòng)態(tài)等;②信息查詢類,如教師培訓(xùn)信息、考生報(bào)考信息等信息查詢;③資源下載類,如文檔、表格等。
數(shù)據(jù)庫(kù)設(shè)計(jì)的基本任務(wù)是根據(jù)應(yīng)用目標(biāo)的信息需求和數(shù)據(jù)庫(kù)支撐環(huán)境,設(shè)計(jì)出數(shù)據(jù)庫(kù)的模式結(jié)構(gòu)和應(yīng)用程序[5]。主要數(shù)據(jù)庫(kù)表包括文章欄目表、文章內(nèi)容表。表結(jié)構(gòu)如表1、表2所示。
系統(tǒng)實(shí)現(xiàn)的關(guān)鍵是如何使用PHP讀寫(xiě)PostgreSQL。在php中,用ezSQL類實(shí)現(xiàn)對(duì)PostgreSQL數(shù)據(jù)的讀寫(xiě)。首先在后臺(tái)PHP頁(yè)面引入ezSQL類的核心文件:[HT5"]
include_once "../shared/ez_sql_core.php";
include_once "ez_sql_postgresql.php";
建立與數(shù)據(jù)庫(kù)的連接,并實(shí)例化ezSQL對(duì)象$db,通過(guò)調(diào)用$db的get_results方法實(shí)現(xiàn)查詢操作,調(diào)用query方法實(shí)現(xiàn)對(duì)數(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)管理員及子站點(diǎn)管理員兩類。網(wǎng)站各子站點(diǎn)管理員由系統(tǒng)管理員進(jìn)行添加與維護(hù),各子站點(diǎn)管理員負(fù)責(zé)各自部門網(wǎng)站維護(hù)。系統(tǒng)管理員可同時(shí)將同一信息發(fā)布到不同的子站點(diǎn)。
3 結(jié)語(yǔ)
本文系統(tǒng)支持跨平臺(tái),安全性能可靠,經(jīng)投入使用,系統(tǒng)維護(hù)簡(jiǎn)單、效果良好,保證了網(wǎng)站在高負(fù)載下保持穩(wěn)定運(yùn)行。利用開(kāi)源、免費(fèi)、高效的LNPP技術(shù)架構(gòu)開(kāi)發(fā)Web系統(tǒng)是可行的。LNPP技術(shù)不僅能滿足系統(tǒng)性能要求,而且能適應(yīng)大訪問(wèn)量的需要,保證系統(tǒng)在重負(fù)荷下保持穩(wěn)定運(yùn)行,同時(shí)具有良好的擴(kuò)充性和可維護(hù)性,為類似系統(tǒng)開(kāi)發(fā)提供一定參考和借鑒。
參考文獻(xiàn):
[1] 刁慶軍,周曉婭,吳志勇.我國(guó)高校繼續(xù)教育辦學(xué)的現(xiàn)狀[J].中國(guó)遠(yuǎn)程教育,2013(10):12.
[2] 趙越.高校網(wǎng)站建設(shè)及管理存在的問(wèn)題與對(duì)策[J].產(chǎn)業(yè)與科技論壇,2011(2):212213.
[3] 劉鑫. MySQL和PostgreSQL的對(duì)比選擇[J].沈陽(yáng)工程學(xué)院學(xué)報(bào):自然科學(xué)版,2011(2):171173.
[4] 左欣.基于PHP+Nginx高負(fù)載查詢打印系統(tǒng)的構(gòu)建[J].貴州師范學(xué)院學(xué)報(bào),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é)任編輯:陳福時(shí))