Python web 協議和伺服器基礎

2021-09-21 02:20:53 字數 4836 閱讀 9398

python web 協議和伺服器基礎

cgi:cgi 全稱為common gateway inte***ce (通用閘道器介面),目的是能夠讓伺服器能夠方便的呼叫外部程式。cgi本身是一套協議和規範,原則上只要是擁有讀寫檔案功能的程式語言都可以用來編寫cgi程式,伺服器在認為這是乙個cgi請求時,會呼叫相關cgi程式,並通過環境變數和標準輸出將資料傳送給cgi程式,cgi程式處理完資料,生成html,然後再通過標準輸出將內容返回給伺服器,伺服器再將內容交給使用者,cgi程序退出。伺服器的標準輸出對應了cgi程式的標準輸入,cgi程式的標準輸出對應著伺服器的標準輸入,相當於利用兩條管道建立了程序間的通訊。(nginx不支援cgi(支援cgi的公升級版fastcgi和scgi),而apache原生支援cgi)

cgi方式在遇到連線請求(使用者請求)先要建立cgi的子程序,啟用乙個cgi程序,然後處理請求,處理完後結束這個子程序。這就是fork-and-execute模式。所以用cgi方式的伺服器有多少連線請求就會有多少cgi子程序,子程序反覆載入是cgi效能低下的主要原因。當使用者請求數量非常多時,會大量擠占系統的資源如記憶體,cpu時間等,造成效能低下。

cgi指令碼工作流程:

瀏覽器通過html表單或超連結請求指向乙個cgi應用程式的url。

伺服器收發到請求。

伺服器執行所指定的cgi應用程式。

cgi應用程式執行所需要的操作,通常是基於瀏覽者輸入的內容。

cgi應用程式把結果格式化為網路伺服器和瀏覽器能夠理解的文件(通常是html網頁)。

網路伺服器把結果返回到瀏覽器中。

fastcgi:fastcgi是從cgi發展改進而來的。傳統cgi介面方式的主要缺點是效能很差,因為每次http伺服器遇到動態程式時都需要重新啟動指令碼解析器來執行解析,然後結果被返回給http伺服器。fastcgi像是乙個常駐(long-live)型的cgi,它可以一直執行著,只要啟用後,不會每次都要花費時間去fork一次(這是cgi最為人詬病的fork-and-execute 模式)。cgi 就是所謂的短生存期應用程式,fastcgi 就是所謂的長生存期應用程式。

fastcgi的工作流程:

web server啟動時載入fastcgi程序管理器(php-cgi或者php-fpm或者spawn-cgi)

fastcgi程序管理器自身初始化,啟動多個cgi直譯器程序(可見多個php-cgi)並等待來自web server的連線。

當客戶端請求到達web server時,fastcgi程序管理器選擇並連線到乙個cgi直譯器。web server將cgi環境變數和標準輸入傳送到fastcgi子程序php-cgi。

fastcgi子程序完成處理後將標準輸出和錯誤資訊從同一連線返回web server。當fastcgi子程序關閉連線時,請求便告處理完成。fastcgi子程序接著等待並處理來自fastcgi程序管理器(執行在web server中)的下乙個連線。 在cgi模式中,php-cgi在此便退出。

fastcgi 的特點

明確的請求模式。cgi 技術沒有乙個明確的角色,在 fastcgi 程式中,程式被賦予明確的角色(響應器角色、認證器角色、過濾器角色)。

重寫環境變數後,根據目標url,將請求訊息路由到不同的應用物件。

允許在乙個程序中同時執行多個應用程式或應用框架。

負載均衡和遠端處理,通過在網路上**請求和響應訊息。

進行內容後處理,例如應用xslt樣式表。

django中的wsgi實現

django 專案中執行 python manage.py runserver 可以啟動乙個簡易的wsgi server

uwsgi:與wsgi一樣是一種通訊協議,是uwsgi伺服器的獨佔協議,它是乙個二進位制協議,可以攜帶任何型別的資料。乙個uwsgi分組的頭4個位元組描述了這個分組包含的資料型別。與wsgi協議是兩種東西,據說該協議是fcgi協議的10倍快。

uwsgi:web伺服器,uwsgi 專案旨在為部署分布式集群的網路應用開發一套完整的解決方案。uwsgi主要面向web及其標準服務,已經成功的應用於多種不同的語言。由於uwsgi的可擴充套件架構,它能夠被無限制的擴充套件用來支援更多的平台和語言。目前,你可以使用c,c++和objective-c來編寫外掛程式。專案名稱中的「wsgi」是為了向同名的python web標準表示感謝,因為wsgi為該專案開發了第乙個外掛程式。uwsgi是乙個web伺服器,它實現了wsgi協議、uwsgi、http等協議。uwsgi,既不用wsgi協議也不用fastcgi協議,而是自創了乙個uwsgi的協議,uwsgi協議是乙個uwsgi伺服器自有的協議,它用於定義傳輸資訊的型別(type of information),每乙個uwsgi packet前4byte為傳輸資訊型別描述,它與wsgi相比是兩樣東西。據說該協議大約是fcgi協議的10倍那麼快。

NFS(共享檔案)協議和服務

nfs協議是一種用於檔案共享的協議,它可以使得主機之間進行檔案的共享。客戶端可以像在本機上的檔案一樣操作遠端主機的檔案。nfs協議最初僅支援udp協議,目前最新版本的nfs可以支援udp和tcp協議,不過udp協議的速度會更快。一 安裝nfs伺服器和客戶端 nfs協議是乙個十分簡單的協議,它本身沒有...

電腦和伺服器主要

第3章 電腦和伺服器的構成 一台電腦是由許許多多的零部件組成,只有這些零部件組合在一起協調的工作,才能稱之為電腦 電腦發展到現在有很大的變化,但是工作原理卻沒有發生變化,其中包括,主機板,cpu,記憶體 硬碟,顯示卡,音效卡等等,下面將簡單的介紹組成電腦的各個零部件。3.1 機箱 3.2 電源 功能...

網域名稱和伺服器繫結及https協議更換

伺服器是之前已經購買了的 3.網域名稱到手,進入 網域名稱管理 就可以看到自己的網域名稱了。如果找不到網域名稱管理就去雲產品搜尋 網域名稱管理 4.實名認證,按照指導去實名認證就可以了,不認證過幾天就用不了了 5.繫結伺服器 前提是已經有伺服器了 點選解析,進入設定 新增記錄 主機記錄 選擇解析的方...