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