亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

淺談Python項目的服務器部署

瀏覽:2日期:2022-06-21 11:15:14
關于Web服務器和應用服務器

基本概念:

Web服務器主要功能就是存儲、處理、傳遞網頁,客戶端和服務器之間基于HTTP協議進行通信。 應用服務器主要是處理動態請求,調用相應的對象完成對請求的處理,返回響應的結果。

兩者之間的區別:

Web服務器主要是以HTTP為核心,WEB UI為向導的應用,處理一些靜態請求。 應用服務器雖然也支持HTTP協議,但應用服務器可以通過很多協議為應用程序提供商業邏輯。Python項目部署架構

在我們平時搭建一個Python Web項目時,比如Django框架的項目,這時候常見的服務端架構:

Nginx服務器作為代理服務器,代理處理靜態資源(js,css,圖片)請求,以及動態請求(增刪改查)轉發以及返回處理結果。 uWSGI服務器負責接受Nginx服務器,處理過后轉發給Django應用,接受Django應用處理返回的信息,在轉發給nginx Django應用從uWSGI服務器接收請求,調用相應的業務邏輯,處理數據渲染相應的頁面并且返回給uWSGI服務器。關于cgi、wsgi、uwsgi、http協議

接下來針對上文提到Django項目部署架構,聊聊這幾個協議在這過程中的作用:

http協議:客戶端程序和Nginx服務器通信就是基于http協議,而Nginx服務器作為一個代理服務器,會根據HTTP請求返回靜態資源還是轉發動態請求。 cgi協議:cgi協議是外部應用程序和Web服務器之間的接口標準,簡而言之,就是規定如何讓一個程序與Web服務器程序之間通信。 wsgi協議:基于現存的CGI標準設計,一個Python web框架編寫的應用程序和Web服務器之間通信的規范。 uwsgi:uWSGI服務器獨有的協議,用于uWSGI服務器和其他Web服務器之間的數據通信 關于cgi、fastcgi、php-fpm、FastCGI(額外) CGI:是 Web Server 與 Web Application 之間數據交換的一種協議。 FastCGI:同 CGI,是一種通信協議,但比 CGI 在效率上做了一些優化。同樣,SCGI 協議與 FastCGI 類似。 PHP-CGI:是 PHP (Web Application)對 Web Server 提供的 CGI 協議的接口程序。 PHP-FPM:是 PHP(Web Application)對 Web Server 提供的 FastCGI 協議的接口程序,額外還提供了相對智能一些任務管理。 關于uWSGI、Nginx服務器

簡單來講,uWSGI也是一個Web服務器,他雖然同時實現了http、uwsgi、wsgi協議,但是更多被作為應用服務器和應用程序之間進行通信。那么這里就有個疑問了,為什么uWSGI都能直接處理http請求了,還需要Nginx服務器?這樣處理有幾點原因:

首先Nginx服務器在這過程中屬于代理服務器的角色,每當一個http請求進來,就需要經過Nginx服務器,而Nginx服務器的優勢就在于異步非阻塞的網絡模型,它能夠在單線程的情況下處理大量的請求,針對處理靜態資源請求;而對于動態請求,能夠通過緩存的功能,并且配合CDN進行優化,這樣能夠極大降低系統的負載,降低客戶端響應時間。 其次,Nginx服務器能夠進行負載均衡,啟用多個后端服務器,通過Nginx對HTTP請求進行分配,這樣能夠極大優化架構的效率,提高處理的性能。 最后,Nginx有很多模塊支持一些比如白名單,黑名單功能,并且配合keepalive實現高可用的架構.

總而言之,Nginx服務器在處理http請求上,都有著uWSGI沒有的優勢,所以在日常部署環境中,經常會使用到Nginx+uWSGI。

uWSGI安裝部署

uWSGI有兩種安裝方式,一種是通過pip安裝,一種是通過源碼安裝。這里就簡單介紹pip安裝方式,源碼安裝有興趣可以私下自己了解。

pip install uwsgi相關文件

uWSGI服務器在啟動的過程中主要涉及到以下這幾個文件,其中uwsgi.sock還會涉及到Nginx相關部署的問題,在Nginx配置的時候回繼續展開講。

(venv) [root@mbb-48 uwsgi]# tree ..|-- uwsgi.ini # uwsgi配置文件|-- uwsgi.log # uwsgi日志文件|-- uwsgi.pid # uwsgi運行進程pid|-- uwsgi.sock # uwsgi socket`-- uwsgi.status # uwsgi狀態文件配置示例

以下配置是自己一個項目中用到的,其中的配置參數都是比較常見通用。

[uwsgi]chdir=/data/Novel/novel_testmodule=novel_test.wsgi:applicationhome=/data/Novel/venvstatic-map=/static=/data/Novel/novel_test/staticthreads=8http=0.0.0.0:23606master=truevacuum=truethunder-lock=trueuid=rootgid=rootharakiri=30post-buffering=4096socket=%(chdir)/uwsgi/uwsgi.sockstats=%(chdir)/uwsgi/uwsgi.statuspidfile=%(chdir)/uwsgi/uwsgi.piddaemonize=%(chdir)/uwsgi/uwsgi.log

配置解析

chdir: 定義項目的目錄 module: 要使用的 WSGI 模塊,不同的Python web框架中使用方式也不太一樣。 home: 指定Python執行環境,這個參數針對有不同Python運行環境,比如virtualenv創建獨立Python環境的情況。 static-map: 映射靜態目錄 threads: 線程數量 http: 指定啟動地址和端口 master: 啟用主進程 vacuum: 退出時,清理產生的中間文件(sock,pid,stats) thunder-lock: 序列化接收的內容 uid: 指定啟動用戶 gid: 指定啟動組 harakiri: 設置服務器響應時間 post-buffering: 啟用緩沖 socket: socket文件存放路徑 stats: stats文件存放路徑 pidfile: pid文件存放路徑 daemonize: 日志文件輸出文件路徑

額外配置

processes: 進程數量 buffer-size: 設置緩沖大小 listen: 設置監聽隊列大小(默認100) max-requests: 每個工作進程請求書的最高上限 procname-prefix-spaced: 工作進程的前綴名 wsgi-file: 指定加載WSGI文件 常用命令

上面介紹了相關常用的配置參數,當設置uWSGI參數后,需要啟動指定配置文件,以及有關暫停,重啟的動作。

uwsgi --ini uwsgi.ini # 啟動uWSGIuwsgi --stop uwsgi.pid # 暫停uWSGIuwsgi --reload uwsgi.pid # 重啟uWSGI服務監控

uWSGI之一Stats服務器機制,它能將uWSGI狀態作為一個JSON對象導出一個socket中,只需要像我們前面配置uWSGI配置文件一樣,添加stats選項,跟著一個有效的socket地址接口。

當你配置完畢后,就可以通過客戶端連接到指定的socket地址,將會獲得一個包含uWSGI內部統計數據的JSON對象。

uwsgi --connect-and-read uwsgi.status

執行完這個命令后,讀取的返回的結果是一個json字符串,字符串中包括每個線程的狀態,整個應用的負載,版本,監聽隊列等詳細的信息。

uwsgitop查看實時狀態uwsgitop是一個開源的實時監控uWSGI服務器狀態的工具,安裝也十分簡單:

pip install uwsgitop

具體uwsgitop像一個top命令,監聽應用程序并且使用socket地址進行調用,查看進程運行狀態,運行詳細信息:

uwsgitop uwsgi/uwsgi.statusuwsgi-2.0.19.1 - Sun Sep 20 15:58:48 2020 - req: 6 - RPS: 0 - lq: 0 - tx: 67.6Knode: mbb-48 - cwd: /data/Novel/novel_test - uid: 0 - gid: 0 - masterpid: 15109 WID % PID REQ RPS EXC SIG STATUS AVG RSS VSZ TX ReSpwn HC RunT LastSpwn 1100.0 15144 6000idle 15ms 0067.6K 10125.449 15:48:08 :2 16.7 -10--idle ----- :3 16.7 -10--idle ----- :0 33.3 -20--idle ----- :1 33.3 -20--idle -----

具體有興趣的同學可以參考github地址:

https://github.com/xrmx/uwsgitop

總結

關于uWSGI服務器相關使用就總結到這里,因為在平時工作中會經常接觸到,但是由于沒有應用到一些高并發的場景,對于uwsgi調優方面沒有多少經驗,等待以后遇到此類問題再繼續總結性能調優方面的問題。同時有關Nginx方面的配置留到下一篇文章繼續講,未完待續。。。。。

以上就是淺談Python項目的服務器部署的詳細內容,更多關于python 服務器部署的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美日韩免费播放一区二区 | 欧美成人免费看片一区 | 蜜桃视频一区二区在线观看 | 国产欧美日韩精品高清二区综合区 | 色婷婷国产精品欧美毛片 | 亚洲精品国产一区二区三区四区 | 日韩欧美中文字幕在线视频 | 国产精品视频分类 | 国产欧美日韩精品专区 | 久热香蕉在线视频 | 日本一区二区三区精品视频 | 亚洲精品一区二区手机在线 | 欧美激情二区三区 | 成人合成mv福利视频网站 | 96av视频| 欧美洲精品亚洲精品中文字幕 | 亚洲a级片在线观看 | 国产又色又爽又黄又刺激18 | 免费一级片网站 | 中国一级毛片国产高清 | 免费看操片 | 亚洲国产第一区 | 日韩欧美一区在线观看 | 久久久久欧美精品观看 | 色噜噜狠狠狠综合曰曰曰88av | 国产乱理论片在线观看理论 | 一本久道久久综合 | 久久国产精品免费专区 | 亚洲欧美日韩第一页 | 妹子草网| 欧美大陆日韩一区二区三区 | 亚洲精品永久一区 | 国产亚洲精品国看不卡 | 亚洲高清国产一区二区三区 | 亚洲国产综合久久精品 | 伊人青青视频 | 久热国产视频 | 精品在线免费播放 | 把女人弄爽特黄aa大片视频 | 在线播放国产精品 | 在线观看免费情网站大全 |