施建華 曹林峰
摘要:實驗研究了以UPUPW Nginx集成環(huán)境為Web服務(wù)器,Windows Server 2008 R2操作系統(tǒng)下搭建Moodle平臺的過程,經(jīng)比較試驗得出了基于WNMP框架下,Nginx Web服務(wù)器、MYSQL數(shù)據(jù)庫和PHP的優(yōu)化配置,以期提高Moodle平臺的訪問速度。
關(guān)鍵詞:Moodle;UPUPW Ngnix;性能優(yōu)化;配置;教學(xué)平臺
中圖分類號:TP311.5 文獻標(biāo)識碼:A 論文編號:1674-2117(2016)07-0104-05
Moodle(Modular Object Oriented Dynamic Learning Environment) 即模塊化的面向?qū)ο蟮膭討B(tài)學(xué)習(xí)環(huán)境,是澳大利亞教師Martin Dougiamas基于建構(gòu)主義教育理論,設(shè)計開發(fā)的免費開源的課程管理系統(tǒng)(CMS),是目前世界上應(yīng)用最廣泛的網(wǎng)絡(luò)教學(xué)平臺之一。?
Moodle能夠幫助教師高質(zhì)量地創(chuàng)建和管理在線課程,建立有效的在線學(xué)習(xí)社區(qū)。它以建構(gòu)主義學(xué)習(xí)理論為基礎(chǔ)而設(shè)計,充分體現(xiàn)了以學(xué)習(xí)者為中心的現(xiàn)代教育理念,為教師在信息化環(huán)境中設(shè)計、管理、實施和評價課程提供了一個開放的平臺。本實驗以64位Windows Server 2008 R2操作系統(tǒng)為研究樣本,選用UPUPW Nginx集成環(huán)境作為服務(wù)器軟件,采用WNMP架構(gòu)來架設(shè)Moodle課程平臺,力圖避免繁瑣的服務(wù)器環(huán)境安裝和配置,嘗試平臺配置及功能擴展并實現(xiàn)性能優(yōu)化,以期實現(xiàn)平臺穩(wěn)定高效的訪問。
搭建平臺軟件環(huán)境
1.操作系統(tǒng)
Windows Server 2008 R2是一款64位的服務(wù)器操作系統(tǒng)。同Windows Server 2008相比,Windows Server 2008 R2繼續(xù)提升了虛擬化、系統(tǒng)管理彈性、網(wǎng)絡(luò)存取方式以及信息安全等領(lǐng)域的應(yīng)用。該研究采用Windows Server 2008 R2標(biāo)準(zhǔn)版作為操作系統(tǒng),且安裝了所有的系統(tǒng)更新。
2.UPUPW Nginx集成環(huán)境組建
UPUPW PHP環(huán)境集成包是目前Windows平臺下具有特色的Web服務(wù)器PHP套件,包括Apache版、Ngnix版和Kangle版。UPUPW PHP套件省去了搭建Web服務(wù)器PHP環(huán)境的復(fù)雜程序,下載解壓到裝有任意Windows系統(tǒng)電腦的非中文目錄即可運行。經(jīng)比較,Ngnix服務(wù)器比Apache服務(wù)器的響應(yīng)請求速度要快,因此本次Moodle教學(xué)平臺選用的服務(wù)器集成環(huán)境為UPUPW Ngnix版本。本次操作系統(tǒng)平臺為Windows 2008 Server R2,因此實驗環(huán)境選擇的版本為UPUPW Ngnix5.4版本,安裝完成后通過語言選擇即可實現(xiàn)操作界面中文化。它支持PHP擴展、Apache的mod_rewrit以及phpMyAdmin、SQLiteManager。無需輸入復(fù)雜的SQL語句,就可以通過phpMyAdmin直接管理MySQL數(shù)據(jù)庫;可一鍵啟動、停止以及重啟所有服務(wù)。其版本信息如下:
①數(shù)據(jù)庫服務(wù)器:服務(wù)器為LocalhostviaTCP/IP,服務(wù)器類型為MySQL,服務(wù)器版本為5.7.4-m14-MySQL Community Server(GPL),協(xié)議版本10,用戶為root@localhost,服務(wù)器字符集采用UTF-8Unicode(utf8)。
②網(wǎng)站服務(wù)器:nginx/1.6.0 (Win64)PHP/5.5.15擴展采用MySQL,數(shù)據(jù)庫客戶端版本為 libmysql-mysqlnd 5.0.11-dev,PHP擴展為mysqli。
③PhpMyAdmin.版本信息4.2.6。
3.Microsoft Visual C++ Redistributable組件環(huán)境安裝
Visual C++庫的運行組件,使用戶能夠在未安裝Visual C++的計算機上運行使用Visual C++開發(fā)的應(yīng)用程序。經(jīng)安裝測試得到結(jié)論:基于Windows 7及Windows Server 2008 R2操作系統(tǒng),Moodle教學(xué)平臺可以成功安裝并且正常運行的前提條件是系統(tǒng)必須具備以下Visual C++組件:
①MicrosoftVisualC++2010x64&x86Redistributable-10.0.40219。?
②MicrosoftVisualC++2012x64&x86Redistributable-11.0.60610。?
在Windows Server 2008 R2平臺下,UPUPW Ngnix版本套裝安裝后,通過瀏覽器訪問,首頁如圖1所示,說明已經(jīng)成功安裝。
安裝Moodle平臺
從Moodle官方網(wǎng)站下載當(dāng)前穩(wěn)定的Moodle版本Moodle2.9。
確定Moodle版本后即可通過UPUPW Ngnix進行平臺安裝。將下載的Moodle標(biāo)準(zhǔn)壓縮包moodle_2.9.zip拷貝到UPUPW Ngnix安裝路徑下的htdoc文件夾中(X:\upupw\htdoc,其中X為程序安裝所在分區(qū)),解壓縮后產(chǎn)生一個包含Moodle2.9安裝文件的Moodle文件夾。啟動服務(wù)器程序UPUPW Ngnix,在環(huán)境界面選擇數(shù)據(jù)庫管理工具phpMyAdmin,以root身份登錄,密碼也為root,新建Moodle數(shù)據(jù)庫整理方式選擇utf8_general_ci。單擊啟動Moodle安裝界面,借助安裝向?qū)?,進行相應(yīng)的設(shè)置即可完成平臺搭建。值得注意的是,設(shè)置的管理員用戶名 (缺省為admin) 和登錄密碼必須妥善保存。Moodle系統(tǒng)正確安裝后的界面如圖2所示。
Moodle平臺配置
1.端口設(shè)置
UPUPW Ngnix安裝完成后,運行Local host測試啟動狀態(tài),若不正常,多數(shù)情況是由于Ngnix的80端口被占用,那么可以修改Ngnix目錄下httpd.conf(X:\wamp\bin\Apache\Apache2.4.4\conf\)文件的listen端口,實現(xiàn)UPUPW Ngnix正常啟動。
2.位置時區(qū)設(shè)置
通過系統(tǒng)管理身份登錄,找到“設(shè)置—網(wǎng)站管理—位置—位置設(shè)置”,將默認時區(qū)設(shè)為UTC+8,國家/地區(qū)為中國。?
3.設(shè)置Moodle網(wǎng)絡(luò)訪問
首先確認局域網(wǎng)連接正常且已開通服務(wù)器遠程訪問,并允許用戶遠程連接到此計算機,確定服務(wù)器上的服務(wù)已啟動,Moodle能正常訪問:
第一種方式:局域網(wǎng)訪問設(shè)置。在Moodle根目錄下找到config.php(X:\wamp\www\moodle)文件,并將“http://loalhost/moodle”改為http://202.207.102.33/moodle(為服務(wù)器IP,以下同),在Nginx目錄中的httpd.conf文件找到Listen127.0.0.1:80修改為Listen202.207.102.33:80。
第二種方式:外網(wǎng)訪問設(shè)置。先在Nginx目錄下的httpd.conf文件中,找到語句#Listen12.34.56.78:80Listen80,在兩句間添加一行語句Listen202.207.102.33:80,打開Moodle根目錄下config.php文件,找到$CFG->wwwroot='http://localhost/moodle',把它改成$CFG->wwwroot='http://202.207.102.33/moodle'。
4.Moodle郵件發(fā)送設(shè)置
以管理員admin賬戶登錄,找到“設(shè)置—網(wǎng)站管理—插件—消息輸出-Email”,在SMTP主機欄輸入一個或多個本地SMTP服務(wù)器全稱或者直接使用服務(wù)器IP:http://202.207.102.33(郵件服務(wù)器已開啟SMTP轉(zhuǎn)發(fā)服務(wù)),設(shè)置SMTP服務(wù)器安全連接協(xié)議(如SSL)填入用于SMTP服務(wù)器身份驗證的用戶名和密碼。同時,在“插件—身份驗證—管理身份認證”的通用設(shè)置中,開啟“基于Email”的自助注冊。
Moodle平臺運行性能優(yōu)化
1.PHP優(yōu)化
PHP優(yōu)化主要通過對文件php.ini(X:\upupw\php5)中的主要相關(guān)參數(shù)進行合理調(diào)整和設(shè)置加以實現(xiàn)。
①函數(shù)禁用(disable_functions)的設(shè)置。推薦的禁用函數(shù)包括phpinfo、passthru、exec、system、popen、chro-ot、escapeshellcmd、escapeshellarg、shell_exec、proc_open、proc_get_status等。若服務(wù)器中含有一些系統(tǒng)狀態(tài)檢測的PHP程序,排除禁用shell_exec、proc_open、proc_get_status等函數(shù)。
②腳本最大執(zhí)行時間(max_execution_time=30)。如果一個PHP腳本被請求,必須在max_execution_time時間內(nèi)執(zhí)行完畢,否則停止執(zhí)行并反饋超時錯誤。一般該選項保持默認,當(dāng)PHP腳本確需較長執(zhí)行時間時,應(yīng)增大時間設(shè)置。
③腳本耗用內(nèi)存限制(memory_limit=128M)??筛鶕?jù)服務(wù)器配置適當(dāng)調(diào)高內(nèi)存限制,這樣將Moodle緩存在內(nèi)存中,以減少對外存的訪問,從而顯著提高平臺訪問速度。
④全局函數(shù)聲明(register_globals=Off)。此配置影響到PHP如何接收傳遞過來的參數(shù)。將該選項設(shè)置為On很可能在增加安全漏洞的同時隱藏了數(shù)據(jù)來源,從而引起嚴(yán)重的安全性問題,如果沒有特殊的需要,應(yīng)保留默認設(shè)置。
⑤最大上傳文件尺寸限制(upload_max_filesize=2M)。根據(jù)實際應(yīng)用需求及服務(wù)器配置,可以適當(dāng)增大該設(shè)置。例如,在FileUploads區(qū)域?qū)⒃试S上傳文件的最大值upload_max_filesize=2M調(diào)整為8M;Data Handling區(qū)域,通過表單POST給PHP的所能接收的最大值(包括表單里的所有值)post_max_size=2M,修改為8M。設(shè)置上述參數(shù)后,上傳小于8M的文件一般不成問題。但如果超過8M,還需設(shè)置ResourceLimits區(qū)域參數(shù),將每個PHP頁面運行的最大時間max_execution_time=30調(diào)整為600,接收數(shù)據(jù)所需的最大時間max_input_time=60調(diào)整為600。
⑥Session對話存儲位置。將Session存放目錄指向一個不能通過Web方式訪問但具備可讀寫屬性的文件夾,可有效保存會話數(shù)據(jù),方便維護,提高系統(tǒng)安全性。
⑦最大會話生存周期(session.gc_maxlifetime=1440)。延長會話生存周期可以提高系統(tǒng)的穩(wěn)定性。
2.MySQL優(yōu)化
MySQL優(yōu)化主要通過對文件mysql.ini(X:\upupw\mysql)中的主要相關(guān)參數(shù)進行合理調(diào)整和設(shè)置加以實現(xiàn)。在客戶端使用show-variables和show-status來查看變量設(shè)定值和當(dāng)前值。通過動態(tài)調(diào)整MySQL參數(shù)來增加緩存,使MySQL性能達到優(yōu)化,從而提高Moodle運行速度。有3個配置參數(shù)是最重要的,即key_buffer_size、query_cache_size、table_cache。
①key_buffer_size只對MyISAM表起作用,key_buffer_size指定索引緩沖區(qū)的大小,它決定索引處理的速度,尤其是索引讀取的速度。通過檢查狀態(tài)值Key_read_requests和Key_reads,可以知道key_buffer_size設(shè)置是否合理。通過實驗比較,本次設(shè)置key_buffer_size=256K。
②MySQL提供了查詢緩沖機制。使用查詢緩沖,MySQL將SELECT語句和查詢結(jié)果存放在緩沖區(qū)中,以后對同樣的SELECT語句(區(qū)分大小寫),將直接從緩沖區(qū)中讀取結(jié)果。通過調(diào)節(jié)以下幾個參數(shù)可以知道query_cache_size設(shè)置得是否合理:Qcache inserts、Qcache hits、Qcache lowmem prunes、Qcache free blocks、Qcache total blocks。通過實驗比較,本次設(shè)置query_cache_size=256K。
③table_cache指定表高速緩存的大小,每當(dāng)MySQL訪問一個表時,如果在表緩沖區(qū)中還有空間,該表就被打開并放入其中,這樣可以更快地訪問表中內(nèi)容。通過檢查峰值時間的狀態(tài)值Open_tables和Opened_tables,可以決定是否需要增加table_cache的值。通過實驗比較,本次實驗設(shè)置table_cache=512K。
3.Ngnix Web服務(wù)器優(yōu)化
Ngnix Web服務(wù)器優(yōu)化主要通過對文件nginx.conf(X:\upupw\nginx\confg\)中的主要相關(guān)參數(shù)進行合理調(diào)整和設(shè)置加以實現(xiàn),重要的配置參數(shù)如下。
①worker process:定義了Nginx對外提供Web服務(wù)時的worker進程數(shù)。最優(yōu)值取決于許多因素,包括(但不限于)CPU核的數(shù)量、存儲數(shù)據(jù)的硬盤數(shù)量及負載模式。不能確定的時候,將其設(shè)置為可用的CPU內(nèi)核數(shù)將是一個好的開始(設(shè)置為“auto”將嘗試自動檢測它)。
②worker_rlimit_nofile:更改worker進程的最大打開文件數(shù)限制。如果沒設(shè)置的話,這個值為操作系統(tǒng)的限制。設(shè)置后的操作系統(tǒng)和Nginx可以處理比“ulimit?a”更多的文件,所以把這個值設(shè)高,這樣Nginx就不會有“too many open files”問題了。
③worker_connections:設(shè)置可由一個worker進程同時打開的最大連接數(shù)。如果設(shè)置了上面提到的worker_rlimit_nofile,我們可以將這個值設(shè)得很高。最大客戶數(shù)也由系統(tǒng)的可用socket連接數(shù)限制,所以設(shè)置不切實際的高沒什么好處。
④tcp_nopush:告訴Nginx是在一個數(shù)據(jù)包里發(fā)送所有的文件,而不一個接一個地發(fā)送。
⑤tcp_nodelay:告訴Nginx不要緩存數(shù)據(jù),而是一段一段地發(fā)送,當(dāng)需要及時發(fā)送數(shù)據(jù)時,就應(yīng)該給應(yīng)用設(shè)置這個屬性,不然這樣發(fā)送一小塊數(shù)據(jù)信息時就不能立即得到返回值。
⑥keepalive_timeout:給客戶端分配keep-alive鏈接超時時間。服務(wù)器將在這個超時時間過后關(guān)閉鏈接。我們將它設(shè)置低些可以讓Ngnix持續(xù)工作的時間更長。
綜上所述,筆者從技術(shù)實現(xiàn)角度描述了以UPUPW Ngnix作為Web服務(wù)器運行集成環(huán)境,在Windows Server2008 R2系統(tǒng)環(huán)境搭建Moodle平臺的解決方案,通過實驗,最后得出了基于WNMP框架的Moodle系統(tǒng)運行框架的最優(yōu)化配置。
參考文獻:
[1]黎加厚.信息化課程設(shè)計——Moodle信息化學(xué)習(xí)環(huán)境的創(chuàng)設(shè)[M].上海:華東師范大學(xué)出版社,2007:18.
[2]葉展.基于LAMP的開源課程管理系統(tǒng)Moodle的研究[D].長沙:湖南大學(xué)碩士學(xué)位論文,2007:11.
[3]曾棕根.Moodle網(wǎng)絡(luò)課程平臺[M].北京:北京大學(xué)出版社,2010.
[4]劉靜.基于Moodle虛擬學(xué)習(xí)環(huán)境的混合式學(xué)習(xí)模式的構(gòu)建與研究[D].大慶:東北石油大學(xué),2013.
[5]畢曉東.私有云模式下基于Moodle的課程協(xié)作學(xué)習(xí)平臺設(shè)計[J].軟件導(dǎo)刊,2014(1):85-86.
作者簡介:施建華(1979—),男,江蘇東臺人,碩士,講師,研究方向:教學(xué)信息化、網(wǎng)絡(luò)教學(xué)平臺。
基金項目:本文為2014年鹽工職院院級重點教學(xué)改革課題、2015年江蘇省高等教育教學(xué)改革課題“基于MOODLE系統(tǒng)的商貿(mào)服務(wù)專業(yè)群通用課程慕課教學(xué)平臺建設(shè)的研究與實踐”成果之一。項目編號:2015JSJG443。