吳冬晨 勞漢平
關(guān)鍵詞:Linux;服務(wù)器;Nginx;Php-Fpm;MySQL;EduSoho開源網(wǎng)校;性能優(yōu)化
當(dāng)下,有很多在線教育平臺,其中EduSoho系統(tǒng)是一款結(jié)合云計(jì)算服務(wù)的開源在線教育軟件,是一款B2C獨(dú)立網(wǎng)校系統(tǒng),具有在線教學(xué)、在線作業(yè)、在線考試、資訊分享、小組討論、網(wǎng)校管理等功能,適合學(xué)校、企業(yè)及個(gè)人快速構(gòu)建個(gè)性化在線網(wǎng)絡(luò)課堂平臺。EduSoho開源網(wǎng)校系統(tǒng)是基于PHP語言及MySQL數(shù)據(jù)庫架構(gòu)開發(fā)的跨平臺開源程序,有商業(yè)版和開源版。開源版免費(fèi)提供給非商業(yè)用途用戶使用,大幅降低了教育機(jī)構(gòu)及個(gè)人進(jìn)入在線教育的門檻,從而使學(xué)校建立具有自己獨(dú)立域名和獨(dú)立品牌的在線教育網(wǎng)站。
1 網(wǎng)站服務(wù)器的選型
在校園網(wǎng)內(nèi)選擇自行安裝,放在服務(wù)器生產(chǎn)環(huán)境(也就是正規(guī)對外服務(wù)的),使用開發(fā)商推薦的標(biāo)準(zhǔn)配置(Linux + Nginx + Php-Fpm + MySQL) 。EduSoho 開源網(wǎng)校的服務(wù)對象主要是校內(nèi)師生,大部分師生通過校園網(wǎng)進(jìn)行訪問和學(xué)習(xí)。校園網(wǎng)已建成萬兆骨干網(wǎng)絡(luò)核心,主要節(jié)點(diǎn)已經(jīng)實(shí)現(xiàn)千兆到電腦,支持Wi-Fi6 協(xié)議的高速無線AP已經(jīng)基本覆蓋校園,同時(shí)擁有千兆對等帶寬出口,在良好的校園網(wǎng)環(huán)境下,實(shí)現(xiàn)師生們在線教育學(xué)習(xí)的需求,但教學(xué)平臺和教學(xué)資源不充足已經(jīng)成為急需解決的問題。
1.1 網(wǎng)站服務(wù)器選擇的因素
1) 穩(wěn)定性和安全性結(jié)合。網(wǎng)站常常宕機(jī),內(nèi)容莫名消失,這都是因?yàn)榉?wù)器質(zhì)量差或者受到網(wǎng)絡(luò)攻擊。如果網(wǎng)站常常被攻擊,則可以選擇專業(yè)防火墻,專業(yè)防御DDoS和CC攻擊,以保證網(wǎng)站的正常使用。
2) 靈活性。如果在線教育網(wǎng)站流量變化大,業(yè)務(wù)快速發(fā)展,則可以選擇開源的OpenStack云計(jì)算服務(wù)器,OpenStack是一種簡單高效、安全可靠、處理能力可彈性伸縮的云計(jì)算服務(wù)。通過搭建OpenStack私有云計(jì)算服務(wù)器為網(wǎng)站提供彈性收縮的服務(wù)器功能,可彈性擴(kuò)展的資源用量,為網(wǎng)站業(yè)務(wù)在高峰期的順暢保駕護(hù)航,節(jié)省IT運(yùn)營成本,提高資源的有效利用率。
3) 性價(jià)比。不管是個(gè)人還是學(xué)校,購買服務(wù)器的第一考慮的要素大多都是性價(jià)比。高性價(jià)比的服務(wù)器能夠?yàn)閷W(xué)校省去一筆不小的開支,而價(jià)格主要是基于服務(wù)器的配置、機(jī)房設(shè)施等角度進(jìn)行比較,然后企業(yè)再選擇性價(jià)比最高的網(wǎng)站服務(wù)器進(jìn)行使用。
EduSoho開源網(wǎng)校建站服務(wù)器的選擇,主要還是根據(jù)網(wǎng)站類型、網(wǎng)站內(nèi)容、網(wǎng)站訪問量等因素,按需選擇合適的服務(wù)器,以免購買的服務(wù)器與需求不匹配,造成資源浪費(fèi)。
1.2 物理服務(wù)器建站的配置
物理服務(wù)器是指獨(dú)立服務(wù)器,也就是指物理上的單獨(dú)服務(wù)器,物理服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線、陳列卡、網(wǎng)卡、散熱器等,與通用X86計(jì)算機(jī)架構(gòu)類似,但是由于需要提供高可靠的服務(wù),因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴(kuò)展性、可管理性等方面要求較高[1]。相對于云主機(jī)(云服務(wù)器),物理服務(wù)器硬件為自行采購,性能獨(dú)享,但需要專業(yè)技術(shù)人員進(jìn)行運(yùn)維,比較適用于使用時(shí)間長的網(wǎng)站。
在線教育網(wǎng)校這類網(wǎng)站數(shù)據(jù)量多、訪問量大,且加上視頻、圖片資源多,訪問速度要快,所以對服務(wù)器的配置要求較高。
在CPU的選型方面,可以考慮Intel的E5系列的CPU,比如E5-2696v4 這款CPU 擁有14nm 的制造工藝,22核44線程,組成雙路就可以達(dá)到44核88線程,可以配合后期服務(wù)器Nginx和Php-Fpm多進(jìn)程進(jìn)行運(yùn)算。
在主板的選型方面,根據(jù)CPU確定主板采用Intel 的C612芯片組,豐富的PCIE通道和插槽能為NAS存儲和萬兆甚至40G網(wǎng)絡(luò)提供支撐,使得運(yùn)維效率大大提升。
在內(nèi)存的選型方面,由于上述CPU 最大支持DDR4的2400MHz主頻的內(nèi)存條,可以采用單條64G 共8條內(nèi)存,總?cè)萘窟_(dá)到512G內(nèi)存,8條內(nèi)存給兩路CPU 剛好組成四通道,加快了CPU 與內(nèi)存的數(shù)據(jù)交換。
在存儲的選型方面,分為系統(tǒng)盤、程序盤、數(shù)據(jù)盤三部分,系統(tǒng)盤是裝載操作系統(tǒng)的,要求速度快,可以采用NVME 協(xié)議的固態(tài)硬盤;程序盤是用來存儲Nginx程序、Php-Fpm程序、MySQL數(shù)據(jù)庫程序、網(wǎng)站源碼程序等數(shù)據(jù),可以采用MLC企業(yè)級固態(tài)硬盤,同時(shí)組成RAID10陣列;數(shù)據(jù)盤是用來存視頻、圖片等資源,同時(shí)也可以用來備份數(shù)據(jù),要求容量要大,速度也要快,可以采用多個(gè)大容量硬盤,通過組成RAID10陣列,可以保障數(shù)據(jù)的安全可靠,加快了讀寫速度,同時(shí)也可以支持以后容量的擴(kuò)展。
在網(wǎng)卡的選型方面,根據(jù)校園網(wǎng)的結(jié)構(gòu)和帶寬,可以選擇支持4口萬兆的光口網(wǎng)卡,支持VLAN、QOS 策略、流量控制、統(tǒng)一網(wǎng)絡(luò)(iSCSI,F(xiàn)CoE和LAN) 和虛擬化(VMDq和SR-IOV) 等特性,雙線萬兆與校園骨干網(wǎng)絡(luò)交換機(jī)組成聚合鏈接,對上傳、下載進(jìn)行分流。
2 網(wǎng)站建設(shè)前期的準(zhǔn)備
搭建EduSoho開源網(wǎng)校平臺前期要準(zhǔn)備的工作包括域名的注冊、域名備案等工作,這些工作完成后才可以搭建網(wǎng)站。
2.1 域名注冊和備案
購買域名且域名通過實(shí)名認(rèn)證后才能備案,備案后域名才能用作EduSoho開源網(wǎng)校地址,才能申請支付接口和第三方登錄接口。首先到域名注冊商平臺進(jìn)行域名注冊,然后聯(lián)系網(wǎng)絡(luò)接入商進(jìn)行網(wǎng)站備案和IP備案,網(wǎng)站的出口IP默認(rèn)不開通80端口和443端口,這時(shí)需要到網(wǎng)絡(luò)接入商申請備案,一般情況下,提交ICP備案資料需要等待20個(gè)工作日左右,ICP備案完成后由網(wǎng)絡(luò)接入商開通80端口和443端口。為了網(wǎng)絡(luò)安全,需要到公安機(jī)關(guān)互聯(lián)網(wǎng)站安全管理服務(wù)平臺進(jìn)行公安備案,并且提交備案資料到當(dāng)?shù)氐墓簿W(wǎng)警部門進(jìn)行審核。
2.2 微信公眾平臺服務(wù)號
如果EduSoho開源網(wǎng)校平臺需要微信登錄功能,就要申請微信公眾平臺服務(wù)號并進(jìn)行企業(yè)認(rèn)證,微信公眾平臺服務(wù)號的主體不能是個(gè)人,服務(wù)號認(rèn)證成功后再到微信開放平臺進(jìn)行注冊并申請認(rèn)證,然后把服務(wù)號綁定到微信開放平臺,就可以獲得開發(fā)者ID和API接口,實(shí)現(xiàn)微信登錄。開通微信登錄后,EduSoho 開源網(wǎng)校支持使用微信號在手機(jī)端微信App內(nèi)快捷注冊或登錄EduSoho網(wǎng)站。
如果需要釘釘?shù)卿?,也需要申請企業(yè)釘釘并進(jìn)行認(rèn)證,用企業(yè)釘釘管理員賬號登錄釘釘開發(fā)者平臺,在“應(yīng)用開發(fā)-移動接入應(yīng)用-登錄”中通過“創(chuàng)建掃碼登錄應(yīng)用授權(quán)”以獲取App ID實(shí)現(xiàn)EduSoho網(wǎng)站的釘釘?shù)卿洝?/p>
2.3 申請SSL 證書
SSL證書是數(shù)字證書的一種,由權(quán)威數(shù)字證書機(jī)構(gòu)驗(yàn)證網(wǎng)站身份后頒發(fā),可實(shí)現(xiàn)瀏覽器和網(wǎng)站服務(wù)器數(shù)據(jù)傳輸加密。使用SSL證書后,網(wǎng)站使用https訪問,符合等保2.0中“信息傳輸要進(jìn)行加密”的合規(guī)檢查??梢栽诟鱾€(gè)云服務(wù)平臺中申請DV域名型證書,每次申請期限為一年。
3 服務(wù)器操作系統(tǒng)的優(yōu)化
運(yùn)行PHP應(yīng)用,Linux性能比Windows系統(tǒng)快好幾倍,為了獲得更好的性能,服務(wù)器安裝Ubuntu 20.04 服務(wù)器操作系統(tǒng)。通過優(yōu)化Ubuntu服務(wù)器網(wǎng)絡(luò)連接數(shù),解決高并發(fā)Socket最大連接數(shù)限制。網(wǎng)絡(luò)連接數(shù)的限制原理是TCP網(wǎng)絡(luò)鏈路通過打開文件句柄來實(shí)現(xiàn)的,然后提升TCP網(wǎng)絡(luò)連接數(shù)就是提升對文件句柄的限制。
第一步,修改/etc/security/limits.conf文件。在lim? its.conf文件中添加如下行[2](*指代系統(tǒng)用戶名),修改Linux系統(tǒng)對用戶的關(guān)于打開文件句柄的軟限制和硬限制:
4 Nginx 的安裝與優(yōu)化
Nginx 是一款高性能的web服務(wù)器,其高性能是因?yàn)槔昧薒inux內(nèi)核中的epoll機(jī)制,讓CPU盡可能地運(yùn)作起來,沒有阻塞,并且其采用多進(jìn)程單線程的模式,將CPU與worker進(jìn)程綁定,盡量減少CPU的上下文切換。
4.1 Nginx 的安裝
安裝Nginx使用以下命令:
ssuuddoo aapptt iunpsdtaaltle nginx unzip -y
4.2 Nginx 的配置優(yōu)化
第一步,配置/etc/nginx/nginx. conf 文件,優(yōu)化worker工作進(jìn)程,在開頭增加如下3行:
5 MySQL 的安裝與優(yōu)化
由于EduSoho開源網(wǎng)校是在MySQL 5.7版本下開發(fā)的,對MySQL 5.7版本兼容性較好,雖然MySQL 8.0 也可以安裝和使用,但EduSoho程序在日后的在線升級過程中可能會對MySQL進(jìn)行數(shù)據(jù)表操作,有些升級命令對MySQL 8.0不是十分友好,嚴(yán)重會導(dǎo)致數(shù)據(jù)庫損壞鎖定,所以需要安裝MySQL 5.7版本。
5.1 MySQL 數(shù)據(jù)庫的安裝
Ubuntu 20.04默認(rèn)支持MySQ L 8.0版本,若要安裝MySQL 5.7版本則需要配置安裝源
5.2 MySQL 數(shù)據(jù)庫的配置優(yōu)化
MySQL性能優(yōu)化包括查詢速度優(yōu)化、數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化、MySQL服務(wù)器優(yōu)化等。MySQL性能優(yōu)化就是通過合理安排資源,調(diào)整系統(tǒng)參數(shù)使MySQL運(yùn)行更快、更節(jié)省資源。以32G內(nèi)存為例,主要是優(yōu)化查詢、索引的緩沖區(qū)大小,同時(shí)也要限制MySQL的內(nèi)存占用,不能占用過多,以免引起其他程序沒有內(nèi)存可用。在配置文件/etc/mysql/mysql.conf.d/mysqld.cnf 中對相關(guān)參數(shù)進(jìn)行優(yōu)化,進(jìn)入配置文件在[mysqld]字段里進(jìn)行添加或修改:
MySQL 的調(diào)優(yōu)參數(shù)較多,以上是主要的參數(shù)優(yōu)化,根據(jù)CPU和內(nèi)存的配置來調(diào)整,一方面通過優(yōu)化文件系統(tǒng)緩存,提高磁盤I/O的讀寫速度,另一方面通過優(yōu)化操作系統(tǒng)調(diào)整策略,提高M(jìn)ySQL在高負(fù)荷情況下的負(fù)載能力,還可以通過優(yōu)化表結(jié)構(gòu)、索引、查詢語句等方法使查詢響應(yīng)更快[5]。
6 PHP 的安裝與優(yōu)化
6.1 PHP 的安裝
因?yàn)镋duSoho 開源網(wǎng)校程序企培版最高支持PHP 7.3,所以安裝PHP版本選擇7.3版。
第一步,安裝PHP軟件源,命令如下:
6.2 PHP 和Php-Fpm 的配置優(yōu)化
PHP 中的FPM是一種快速進(jìn)程管理器,在服務(wù)器上運(yùn)行的 PHP 并不是單個(gè)進(jìn)程,而是由這個(gè)FPM進(jìn)程管理器派生、控制和終止的一些PHP 進(jìn)程。在Nginx處理成千上萬的連接時(shí),如果PHP設(shè)置不合理,那么將浪費(fèi)很多資源,因?yàn)镹ginx必須等待PHP完成當(dāng)前處理之后才可以接受下一個(gè)請求!
以上對PHP的優(yōu)化是對相關(guān)配置文件中的主要參數(shù)進(jìn)行合理調(diào)整和設(shè)置,包括內(nèi)存優(yōu)化、OPcache性能加速、文件上傳、執(zhí)行時(shí)間、處理會話、緩沖輸出、安全等方面進(jìn)行調(diào)整和設(shè)置,既要在性能上進(jìn)行優(yōu)化,還要在安全方面進(jìn)行優(yōu)化。
7 Edusoho 開源網(wǎng)校程序的優(yōu)化
7.1 EduSoho 開源網(wǎng)校的本地化部署
按照EduSoho開源網(wǎng)校安裝程序完成安裝就可以使用,但上傳視頻、播放視頻都會有卡頓的現(xiàn)象,原因是程序在上傳、播放等應(yīng)用時(shí)調(diào)用了遠(yuǎn)程SDK插件,無論內(nèi)網(wǎng)使用或是資源安全,都應(yīng)實(shí)現(xiàn)程序的本地化部署,主要是把遠(yuǎn)程SDK插件調(diào)用改為本地SDK插件調(diào)用。
第一步,把SDK文件放在EduSoho開源網(wǎng)校程序的web/service-cdn目錄下。
第二步,在app/data目錄下新建dev.lock文件,開啟開發(fā)者模式。
第三步,進(jìn)入網(wǎng)校地址/app_dev.php/admin/setting/ sdeervveilcoep-ecrd修n/”改。配置,把SDK的CDN地址改為“域名/第四步,刪除app/data目錄下的dev.lock文件,關(guān)閉開發(fā)者模式。
第五點(diǎn),清理緩存(命令:rm -rf ./app/cache/*) 使程序的本地化部署生效。
7.2 優(yōu)化視頻的播放
本地化部署 EduSoho開源網(wǎng)校后,在播放視頻時(shí)可能會出現(xiàn)網(wǎng)絡(luò)超時(shí)、播放錯(cuò)誤等異常問題,這是程序調(diào)用的VideoPlayer視頻播放器會對本地視頻在數(shù)據(jù)丟失時(shí),再次進(jìn)行數(shù)據(jù)獲取,每次消耗一次鑒權(quán)次數(shù),次數(shù)為0時(shí)就會出現(xiàn)播放出錯(cuò)的問題,因此修改這個(gè)次數(shù)即可。
經(jīng)過優(yōu)化程序的源碼之后,網(wǎng)站的打開視頻和播放視頻都較為流暢。
7.3 優(yōu)化視頻的制作
本地化部署的EduSoho開源網(wǎng)校,所有視頻存儲在本地硬盤中,也可以引用優(yōu)酷、BiLiBiLi和愛奇藝等在線視頻來播放,在本地視頻中,必須使用流式MP4 文件格式,給MP4文件加入Hint索引,EduSoho開源網(wǎng)校程序就可以實(shí)現(xiàn)邊下載邊播放視頻。
第一步,用“格式工廠”軟件重新轉(zhuǎn)碼輸出MP4視頻,視頻編碼格式為AVC(H264) ,音頻編碼格式:AAC。
第二步,在“格式工廠”的轉(zhuǎn)碼“選項(xiàng)”中,找到“高級”頁面,把“創(chuàng)建PSP MP4 THE”和“創(chuàng)建Hint Track”兩個(gè)選項(xiàng)參數(shù)選中,然后開始轉(zhuǎn)碼。
第三步,利用轉(zhuǎn)換好的視頻,上傳到EduSoho開源網(wǎng)校中,當(dāng)打開視頻就可以實(shí)現(xiàn)視頻的順滑播放。
8 結(jié)束語
EduSoho開源網(wǎng)校程序的安裝比一般的應(yīng)用系統(tǒng)復(fù)雜,但同時(shí)安全系數(shù)也提升了若干倍,尤其是在視頻保護(hù)方面。由于EduSoho開源網(wǎng)校程序是單入口的web 應(yīng)用,所有的請求都從app.php 文件進(jìn)入,并且web目錄下存放的都是公開文件,比如頭像文件、js文件、css文件等,其他文件則分別在app,src等非公開目錄。
經(jīng)過硬件升級,并通過對Ubuntu、Nginx、MySQL、Php-Fpm等配置文件的優(yōu)化,提升了EduSoho開源網(wǎng)校程序的高并發(fā)訪問能力,增強(qiáng)了網(wǎng)站平臺的可用性。在近幾年的實(shí)踐應(yīng)用中,新建了一批線上線下融合教學(xué)的精品課程,比如《計(jì)算機(jī)應(yīng)用基礎(chǔ)》《Linux操作系統(tǒng)》《網(wǎng)絡(luò)技術(shù)基礎(chǔ)》《全國計(jì)算機(jī)等級考試一級WPS考證培訓(xùn)》《1+X網(wǎng)絡(luò)系統(tǒng)軟件應(yīng)用與維護(hù)考證培訓(xùn)》《收銀員職業(yè)技能等級考證培訓(xùn)》《基礎(chǔ)會計(jì)》《財(cái)務(wù)會計(jì)》等課程,為微課教學(xué)、慕課學(xué)習(xí)、翻轉(zhuǎn)課堂等教學(xué)方式方法提供技術(shù)平臺支撐,積累了一些優(yōu)質(zhì)的教學(xué)資源。在當(dāng)今時(shí)代,繼續(xù)通過EduSoho開源網(wǎng)校的深度應(yīng)用中,結(jié)合“教、學(xué)、測、評、練、管”的在線教學(xué)閉環(huán),增強(qiáng)學(xué)生的學(xué)習(xí)興趣,提升學(xué)生的學(xué)習(xí)效果,通過線上線下融合式教學(xué)持續(xù)建設(shè)優(yōu)質(zhì)的教學(xué)資源。