windows下使用nginx + waitress 部署django

架構介紹? ? ? ??

????????linux一般采用nginx + uwsgi部署django,在Windows下,可以取代uwsgi的選項包括Waitressa、Daphnea、Hypercoma和Gunicorna(通過WSLa 運行)。windows服務器一般采用nginx + waitress 部署django,,他們的關系如下

????????django是WEB應用框架,Nginx是web服務器,uwsgi或者waitress 是實現wsgi協議的東西。

????????django當然也可以python manage.py runserver 0.0.0.0:80來讓外部訪問,在生產環境中不推薦使用 Django 的 runserver 命令,主要有以下幾個原因:

  1. 安全性問題

    • runserver 是為開發和調試設計的,沒有經過安全審計或性能測試。

    • 它默認綁定在 0.0.0.0 地址上,對外網完全開放,可能會受到未授權訪問的風險。

    • 不支持 HTTPS,無法保證數據傳輸的安全性。

  2. 性能問題

    • runserver 使用單線程處理請求,無法應對高并發場景。

    • 它會為每個請求重新加載和執行 Django 應用程序,導致性能低下。

  3. 功能限制

    • 缺乏生產環境中需要的負載均衡和容錯機制。

    • 不支持靜態文件的高效服務,通常需要借助專門的靜態文件服務器(如 Nginx)。

  4. 替代方案

    • 在生產環境中,推薦使用專業的 Web 服務器(如 Nginx 或 Apache)搭配 WSGI 服務器(如 Gunicorn 或 uWSGI)來部署 Django 應用。

    • 例如,可以使用 Nginx 作為反向代理服務器,將請求代理給 Gunicorn 來處理 Django 應用

windows下使用nginx + waitress 部署django

下載安裝nginx和配置文件

1、下載
下載鏈接:nginx: download
一直都只在linux中使用nginx,還從未在windows中使用,感覺在windows中使用nginx更為簡單
2、安裝
下載的是一個壓縮包,找個目錄解壓即可,無需安裝,解壓出來的內容為:

image

其中nginx.exe是入口程序,不考慮系統命令的情況下,cd到當前目錄,即可使用nginx的命令了:

Options:
? -?,-h ? ? ? ? : this help
? -v ? ? ? ? ? ?: show version and exit
? -V ? ? ? ? ? ?: show version and configure options then exit
? -t ? ? ? ? ? ?: test configuration and exit
? -T ? ? ? ? ? ?: test configuration, dump it and exit
? -q ? ? ? ? ? ?: suppress non-error messages during configuration testing
? -s signal ? ? : send signal to a master process: stop, quit, reopen, reload
? -p prefix ? ? : set prefix path (default: NONE)
? -e filename ? : set error log file (default: logs/error.log)
? -c filename ? : set configuration file (default: conf/nginx.conf)
? -g directives : set global directives out of configuration file

如果把nginx設置到環境變量中,即可在全局使用nginx命令。

3、配置文件
和linux環境下配置一樣,這里貼一份基礎配置,主要是修改nginx目錄下的conf/nginx.conf

worker_processes  2;error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;pid  logs/nginx.pid;events {worker_connections  1024;
}http {include           mime.types;default_type      application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log        logs/access.log  main;sendfile          on;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost 121.199.1.144;location / {proxy_set_header Host $host;proxy_pass http://127.0.0.1:8000;}location /static {alias C:\inetpub\wwwroot\sanxue\static;}location /media {alias C:\inetpub\wwwroot\sanxue\media;}
下載waitress和使用它

1、下載

pip install waitress

2、使用
waitress的使用太簡單了,國內使用的人也非常少,在django項目的根目錄創建run.py(文件名隨意),內容如下:

from waitress import serve
from sanxue.wsgi import applicationserve(app=application,host='127.0.0.1',port=8000
)

然后使用命令行python run.py即可啟動django的服務了,比IISapache的簡單太多了,跑個中小項目都不成問題。

如果想把以上的命令加到windwos服務中,可參考下面的第3點。

參考

1、waitress官方文檔https://docs.pylonsproject.org/projects/waitress/en/stable/index.html
2、如何在python web項目中使用waitress?Run Python WSGI Web App with Waitress | DevDungeon
3、如何把python項目構建成windows服務?Run Python Script as Windows Service | DevDungeon

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79188.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79188.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79188.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用pnpm patch命令實現依賴包熱更新:精準打補丁指南

需求場景 在Element Plus的el-table組件二次開發中,需新增列顯示/隱藏控件功能。直接修改node_modules源碼存在兩大痛點: 團隊協作時修改無法同步 依賴更新導致自定義代碼丟失 解決方案選型 通過patch-package工具實現: 📦 非…

ThinkPad T520 無法讀到硬盤 問題排查思路

錯誤提示:2100:detection error on hdd0(Main hdd) 1、判斷錯誤提示含義 表示電腦在啟動時無法檢測到主硬盤(HDD0)。 2、 常見原因: 硬盤松動或接觸不良 → 特別是筆記本在移動或震動后,硬盤排線松了。 硬盤損壞 →…

Doris部署生產集群最低要求的部署方案

Doris生產集群最低部署方案(2025年4月版) 一、節點規劃與數量 1. FE節點(Frontend) 數量:至少 3個節點(1個Follower 2個 Observer),確保高可用(HA)。角色分…

游戲引擎學習第227天

今天的計劃 今天的工作重點是進行吸引模式(attract mode)的開發,主要是處理游戲的進出和其他一些小的細節問題,這些是之前想要整理和清理的部分。我做了一些工作,將游戲代碼中的不同部分分離到邏輯上獨立的區域&#…

spark-SQL數據加載和保存

數據加載與保存 通用方式: 通過 spark.read.load 和 df.write.save 實現數據加載與保存。可利用 format 指定數據格式,如 csv 、 jdbc 等; option 用于設置特定參數,像 jdbc 格式下的數據庫連接信息; load 和 save 則…

算法升級戰報:亞馬遜受眾定向工具實測點擊成本降37%

隨著廣告成本居高不下,精準投放成為賣家們繞不開的焦慮點。而最近一輪亞馬遜DSP廣告系統的算法升級,似乎正在給這場投放內卷帶來新的轉機。在這篇文章中,我們將基于實際測試數據,詳細解析亞馬遜受眾定向工具的表現,并復…

大帶寬服務器的優勢

大帶寬服務器最大的優勢就在于可以顯著提高數據傳輸的速度,這對于有著高流量應用和實時數據交換需求的企業來說,大帶寬服務器中的帶寬越大,所提供的數據傳輸速度就越快,同時網絡的延遲度也會變低,所以大帶寬服務器往往…

華為OD機試真題——阿里巴巴找黃金寶箱 IV(2025A卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 A卷 200分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C、C語言、GO六種語言的最佳實現方式! 華為OD機試真題《阿里巴巴找黃金寶箱 IV》: 目錄 題目名稱&…

C++零基礎實踐教程

模塊一:準備工作與第一個程序 (熱身) 在正式編寫代碼之前,我們需要了解為什么要學習 C,并搭建好我們的開發環境。然后,我們將編寫并運行第一個簡單的 C 程序。 1. 為什么選擇 C? 你可能聽說過很多編程語言&#xff…

6 CMD 與 PowerShell 指令大全、C 程序終端運行、字符編碼切換指南

1 CMD 與 PowerShell 常用指令 在命令行環境中高效運行程序,掌握終端的基本操作命令至關重要。無論是 Windows 系統下的 CMD(命令提示符)還是 PowerShell,它們都配備了一系列實用的命令,助力我們管理文件、執行程序以及…

Linux——共享內存

目錄 一、共享內存概念 二、共享內存的一些函數 2.1 shmget 創建共享內存 2.2 shmat 訪問共享內存 2.3 shmdt 解除共享內存的映射 2.4 shnctl 刪除共享內存段 三、共享內存 3.1 創建測試進程 3.2 使用循環測試 ?編輯 3.3 共享內存寫入程序 3.4 帶有信號量的共享內…

數啟新疆,智領未來!2025新疆數字經濟發展戰略研討會在烏市啟幕

2025年4月20日,由新疆維吾爾自治區數字經濟聯合會主辦、中鈞科技有限公司承辦的"2025新疆數字經濟發展戰略研討會"將在烏魯木齊水磨溝區金正大廈三層會議中心隆重召開。 作為本年度新疆數字經濟領域規格最高的行業盛會,會議將匯聚自治區14個廳…

Nginx:輕量級高性能的Web服務器與反向代理服務器

目錄 一.引言 二.Nginx的核心特點 2.1高性能與高并發 2.2低資源消耗 2.3功能豐富 2.4高度擴展性 三.Nginx的應用場景 3.1靜態資源服務器 3.2反向代理服務器 3.3API網關 3.4Nginx的配置與使用 四.總結 一.引言 在互聯網高速發展的今天,Web服務器的性能與…

嵌入式Linux設備使用Go語言快速構建Web服務,實現設備參數配置管理方案探究

本文探討,利用Go語言及gin框架在嵌入式Linux設備上高效搭建Web服務器,以實現設備參數的網頁配置。通過gin框架,我們可以在幾分鐘內創建一個功能完善的管理界面,方便對諸如集中器,集線器等沒有界面的嵌入式設備的管理。…

KALI搭建log4j2靶場及漏洞復現全流程

這里使用了兩臺KALI虛擬機,一臺用于安裝靶場環境,一臺用于攻擊 一、Docker的安裝(靶機) 1、Linux內核版本查看 #安裝docker要求內核版本kerner>3.10 #為此,先檢查當前Linux系統的內核版本 uname -a 2、Linux apt…

學習筆記—C++—模板初階

目錄 模板初階 泛型編程 函數模板 模版概念 函數模版格式 模版的原理 函數模板的實例化 模版參數的匹配規則 類模板 模板初階 泛型編程 使用函數重載雖然可以實現,但是有一下幾個不好的地方: 1. 重載的函數僅僅是類型不同,代碼復…

Docker 中多個容器之間的通信

在 Docker 中,多個容器之間的通信可以通過以下幾種主要方式實現,具體選擇取決于網絡需求、隔離性及管理復雜度: 一、自定義 Bridge 網絡(推薦) 通過創建自定義的 Docker 網絡,容器可以加入同一網絡并通過容…

Day1-初次接觸UFS

經過導師初次介紹,了解工作以芯片測試為主,需堅持學習,小白大致需3-6月入門。整體學習應分為3大塊,UFS協議占40%(3-4h),C技能占40%(3-4h),工具或業務占20%(1-2h&#xff…

【LeetCode 熱題100】二叉樹構造題精講:前序 + 中序建樹 有序數組構造 BST(力扣105 / 108)(Go語言版)

🌱 二叉樹構造題精講:前序 中序建樹 & 有序數組構造 BST 本文圍繞二叉樹的兩類構造類題目展開解析: 從前序與中序遍歷序列構造二叉樹 將有序數組轉換為二叉搜索樹 我們將從「已知遍歷構造樹」和「平衡構造 BST」兩個角度,拆…

JMeter重要的是什么

重要特性 支持多種協議: JMeter支持對多種協議進行性能測試,包括HTTP、HTTPS、FTP、JDBC(數據庫)、LDAP、JMS、SOAP、REST等。這使得它能夠適應各種不同的測試場景。強大的負載模擬能力: JMeter能夠模擬大量的虛擬用戶…