uWSGI伺服器的使用

2021-10-23 09:20:39 字數 1984 閱讀 2711

簡介

介紹uwsgi 是乙個快速的、純c語言開發的、自維護的、對開發者友好的 wsgi 伺服器,旨在提供專業的 python web應用發布和開發。

安裝uwsgi是python的乙個包,所以直接命令安裝即可

pip install uwsgi
名詞解析

wsgi

英文全稱:web server gateway inte***ce,web服務網管介面,簡單來說它是一種web伺服器和應用程式間的通訊規範。

uwsgi

uwsgi是一種通訊協議,不過跟wsgi分屬兩種東西,該協議下速度比較快。

uwsgi

uwsgi是乙個web server,並且獨佔uwsgi協議,但是同時支援wsgi協議、http協議等,它的功能是把http協議轉化成語言支援的網路協議供python使用。

啟動方式

命令列啟動

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
配置檔案啟動

由於uwsgi引數眾多,通過命令列啟動略顯繁瑣,uwsgi提供通過配置檔案啟動,支援的配置檔案有一下格式:

inixmljson

yaml

預設支援格式為ini,同樣為官方推薦格式。

# 檔名:uwsgi.ini

# 可直接當web伺服器,也可用來連線nginx

# socket = 127.0.0.1:8080 # 與nginx連用時使用

chdir =

/zet/zetcore # 設定工作目錄

wsgi-

file

= zetcore.wsgi # 指定與web程式通訊檔案

home =

/zet/venvs/zetcorevenv # 設定虛擬環境路徑

pidfile = uwsgi.pid # 指定pid檔案的位置,記錄主程序的pid號。

worker =

16# 啟動程序數

# processes = 16 啟動程序數 二者設定乙個即可

buffer

-size =

4096

# 設定用於uwsgi包解析的內部快取區大小。預設是4k。

chmod-socket =

666# unix socket是個檔案,所以會受到unix系統的許可權限制。如果你的uwsgi客戶端沒有許可權訪問uwsgi socket,你可以用這個選項設定unix socket的許可權。

vacuum = true # 當伺服器退出的時候自動清理環境,刪除unix socket檔案和pid檔案

disable-logging = true # 不記錄請求資訊的日誌。只記錄錯誤以及uwsgi內部訊息到日誌中。

log-maxsize =

10000000

# 設定日誌最大為10m,超過10m自動分隔

logto =

/var/log/zet/zetcore.log

uwsgi --ini /zet/zetcore/uwsgi.ini
難點解析

一、配置檔案中socket與http的區別:

當使用http時,uwsgi可以充當web伺服器,客戶端可直接訪問,當然也可以通過nginx**到uwsgi,此時nginx與uwsgi之間通訊協議是http協議。nginx中通過proxy_pass實現。

當使用socket時,uwsgi無法當做web伺服器,只能通過nginx訪問,此時nginx與uwsgi之間的通訊協議是uwsgi,相比http協議,此協議效率更高。nginx中通過uwsgi_pass實現。

管理uWSGI伺服器

官網參考 如果您正在管理多個應用程式或高容量站點,請檢視 以系統管理員身份啟動 uwsgi 伺服器 如果以更好的方式啟動 uwsgi 伺服器 支援傳統的方式,如 init.d rc.d 指令碼,supervisor,daemontools 或者 inetd xinetd,工具 現代的系統中使用 sy...

Centos6 5搭建uWSGI伺服器

執行該操作請確保已安裝python3環境,若需安裝python3.5,請移步這裡,專案上線一般都會使用uwsgi伺服器 1.uwsgi伺服器安裝 2.uwsgi部署django專案 修改資料庫配置 debug false 去掉開發模式 allowed hosts 開放訪問host databases...

uwsgi伺服器部署專案無法熱載入資料

uwsgi的設定。方法一 python是一門動態語言,所以我們會經常在伺服器上修修改改,有時候我們在修改後發現我們的 根本沒有生效,這個時候需要我們重新啟動服務 啟動 方法一 uwsgi reload uwsgi.pid 找到啟動uwsgi生成的pid檔案 方法二 pkill 9 uwsgi 殺死在...