正好這段時間多,公司沒啥專案.做乙個httpserver伺服器玩玩,平時多練練,在專案中開發時才能更加的順手.
每個程式設計師都應該嘗試下寫部落格
目前開源的web伺服器主要有:
http請求庫libcurl
我推薦乙個比較小眾的:
1.先看完libevent.初步理解libevent的源**這種事件驅動的網路框架
暫時先採用c語言版來實現,後面再完善成c++版本.
webserver模組分析和設計
1.命令列解析功能
命令列引數主要有哪些?伺服器偵聽埠,最大客戶端數量,**的根目錄,配置檔案名稱,連線超時時間扥等
2.配置檔案解析(tinyxml庫使用)
配置檔案為伺服器的主配置選項,相同選項,配置檔案的配置將覆蓋命令列的配置.
3.日誌庫
使用glog庫,分等級將日誌輸出.
4.多客戶端支援(網路傳輸層,負責接收連線,資料接收,資料傳送)
連線的處理,請求資料的接收,響應資料的傳送,客戶端請求到來的時候,主線程檢視執行緒池中是否有空閒的工作執行緒,
有:分配任務,沒有:建立新的執行緒.此處採用libevent框架來實現.減少多餘的網路問題.
5.http頭部分析
5.1解析http method,如get,post,head等等
5.2 解析http的版本
5.3 解析uri,即請求資源的位址.
6.http uri的分析設計
請求主機的位置以』/『開始,資源位置的最後乙個』/'後的字串為實際請求的檔名.需要根據檔名來判斷請求資源的型別,對於乙個以"%"開頭的字元,需要進行轉換後使用真正的值,其後面的兩個字元拼成乙個字元.
7.http支援方法的分析設計
暫時僅支援get方法,伺服器對應get方法的處理邏輯分為:
頭部資訊的組織(http response響應的頭部資訊)
檔案內容的傳送
8.http支援cgi的分析設計(查閱http cgi的資料和使用方法)
9.http錯誤處理的分析設計
9.1使用者的請求發生錯誤
9.2伺服器端發生錯誤
9.3網路傳輸過程中發生錯誤時
類設計多客戶端併發支援->網路類,libevent構造網路框架
nginx作為web伺服器的功能模組
1 nginx虛擬主機 2 https的實現 需要編譯ssl模組 cd nginx 1.17.1 yum install y openssl devel 編譯ssl模組需要的依賴包 make cert.pem 製作證書 cp cert.pem usr local nginx conf 證書在 usr...
發布npm功能模組到私有伺服器進行復用
發布 在專案目錄下執行 npm run buildbuid成功後 cd build配置映象位址 到伺服器指定資源路徑位置 npm config set registry http 18000 mm n 登入伺服器 到資源位置處 npm login registry http 18000 mm n 輸...
部分Web伺服器資訊對比
本文參考wikipedia的web伺服器比較頁面的資料,選取了其中自己感興趣的web伺服器的資訊進行了對比,包括,apache http server apache tomcat nginx catty。其中,最後乙個catty完全沒有使用過。近期在使用nginx uwsgi伺服器部署flask應用...