中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

梁山專業(yè)網(wǎng)站建設(shè)網(wǎng)址檢測

梁山專業(yè)網(wǎng)站建設(shè),網(wǎng)址檢測,政府網(wǎng)站建設(shè)意義,方山網(wǎng)站建設(shè)文章目錄 通過runserver運行Django通過Gunicorn運行Django通過Nginx來做反向代理通過Supervisor來托管gunicorn和nginx 同步發(fā)布在個人站點:https://panzhixiang.cn 通過runserver運行Django 相信用過Django做開發(fā)的人對于python manage.py runserver 這個命令一定…

文章目錄

  • 通過runserver運行Django
  • 通過Gunicorn運行Django
  • 通過Nginx來做反向代理
  • 通過Supervisor來托管gunicorn和nginx

同步發(fā)布在個人站點:https://panzhixiang.cn

通過runserver運行Django

相信用過Django做開發(fā)的人對于python manage.py runserver 這個命令一定不陌生,這個命令利用django自帶的一個web服務(wù)器,可以幫助我們在本地很簡單地就運行django,對于本地測試來說足夠了,但是不能用作生產(chǎn)環(huán)境中,甚至測試環(huán)境都不行,主要有如下幾點問題:

  1. 性能差
    它是單進(jìn)程、單線程的,因此只能同時處理一個請求。隨著請求量的增加,服務(wù)器的 CPU 和內(nèi)存使用率會不斷上升,最終導(dǎo)致性能下降

  2. 功能有限
    它僅支持基本的 HTTP 請求,不支持 HTTPS、負(fù)載均衡、靜態(tài)文件服務(wù)等功能。在生產(chǎn)環(huán)境中,這些功能是必不可少的。

通過Gunicorn運行Django

正式使用Gunicorn之前,先說一下它的優(yōu)點:
(以下內(nèi)容來自GPT4)

Gunicorn(Green Unicorn)是一個Python的WSGI HTTP服務(wù)器,許多大型網(wǎng)站和高性能應(yīng)用都選用它來托管 Python web 應(yīng)用。以下是 Gunicorn 的一些主要優(yōu)點:

  1. 簡單易用:Gunicorn 非常容易安裝和配置。你只需要通過 pip 安裝它,并用幾行命令就可以啟動一個 WSGI 應(yīng)用。這使得開發(fā)者可以更加專注于他們的應(yīng)用程序代碼,而不需要過多關(guān)心部署和運維問題。

  2. 兼容性強:Gunicorn 全面支持 WSGI 規(guī)范,因此理論上與所有遵循該規(guī)范的Python web框架兼容,包括但不限于Django、Flask和Pyramid等。

  3. 預(yù)分叉模型:Gunicorn 使用 Unix 的 fork 系統(tǒng)調(diào)用創(chuàng)建子進(jìn)程(worker),每個 worker 可以獨立地處理請求。使用預(yù)分叉模型,父進(jìn)程可以在必要時殺死并重建子進(jìn)程,提供了對內(nèi)存泄漏的防護機制。

  4. 負(fù)載管理:Gunicorn 有多種類型的 worker 可供選擇,包括同步 worker 和異步 worker。同步 worker 適合 CPU 密集型任務(wù),而異步 worker 則適合 IO 密集型或網(wǎng)絡(luò)密集型的任務(wù)。這意味著你可以根據(jù)自己的應(yīng)用特性選擇最合適的 worker 類型。

  5. 錯誤隔離:由于每個請求都由各自的 worker 進(jìn)程處理,如果一個請求導(dǎo)致 crash 或者未捕獲的異常,那么只會影響到正在處理該請求的 worker,其他 worker 或請求將不受影響。

  6. 健壯性和可靠性:Gunicorn 能夠自動管理 worker 進(jìn)程,如果某個 worker 異常退出,Gunicorn 主進(jìn)程會自動重新啟動新的 worker 進(jìn)程來代替,從而保證服務(wù)的持續(xù)可用。

  7. 配置靈活:Gunicorn 提供了大量的配置選項,你可以控制日志級別、輸出位置、worker 數(shù)量、請求超時時間、SSL 設(shè)置等諸多方面。同時,Gunicorn 支持從 Python 文件、環(huán)境變量、命令行參數(shù)中讀取配置,滿足了不同場景下的需求。

  8. 熱重載:Gunicorn 支持無縫重啟,這意味著你可以在不中斷服務(wù)的情況下升級代碼或者配置。

  9. 社區(qū)支持和文檔:最后但同樣重要的是,Gunicorn 有一個活躍的開發(fā)者社區(qū)和詳細(xì)的官方文檔,能夠為使用 Gunicorn 的開發(fā)者提供大量的幫助和指導(dǎo)。

在使用 Gunicorn 運行 Django 之前,你需要確保已經(jīng)正確地安裝了 Django 和 Gunicorn。假設(shè)你的 Django 項目名為 myproject,并且它位于 /path/to/myproject/ 下。

  1. 安裝 Gunicorn
    如果你還沒有安裝 Gunicorn,可以使用 pip 來安裝:

    pip install gunicorn
    
  2. 運行 Gunicorn
    現(xiàn)在你應(yīng)該可以用 Gunicorn 來啟動你的 Django 應(yīng)用了。Gunicorn 的基本命令格式是 gunicorn [OPTIONS] APP_MODULE,其中 APP_MODULE 是一個 Python 導(dǎo)入路徑,指向包含 WSGI application 對象的模塊。

    在標(biāo)準(zhǔn)的 Django 項目中,這個對象(通常被稱為 application)定義在 wsgi.py 文件里。所以如果你的項目名為 myproject,那么 APP_MODULE 就是 myproject.wsgi

    要讓 Gunicorn 啟動 Django 項目,可以執(zhí)行以下命令:

    cd /path/to/myproject/
    gunicorn myproject.wsgi
    

    這將會在監(jiān)聽 localhost:8000 的 Gunicorn 服務(wù)器上啟動你的 Django 應(yīng)用。

    注意:這個只是為了演示gunicorn的簡單運行方式,正式環(huán)境中不推薦這么使用

  3. 配置 Gunicorn

    Gunicorn 提供了許多可配置的選項,可以根據(jù)自己的需求去調(diào)整其行為,比較常用的方式是創(chuàng)建一個 Gunicorn 配置文件可以讓你的配置更加結(jié)構(gòu)化和方便管理。Gunicorn 的配置文件通常是一個 Python 腳本,其中定義了一些全局變量。

    假設(shè)我們在 /path/to/myproject/gunicorn_config.py 創(chuàng)建以下配置文件:

    # gunicorn_config.pyimport multiprocessing# 綁定ip和端口號bind = "0.0.0.0:8080"# 使用gevent模式,還可以使用sync 模式,默認(rèn)的是sync模式worker_class = 'gevent'# 開啟的進(jìn)程數(shù)workers = multiprocessing.cpu_count() * 2 + 1# 并發(fā)處理的請求數(shù)量threads = 2# 最大待處理連接數(shù)backlog = 2048# 工作模式協(xié)程worker_connections = 1000# 重載、修改配置后,自動重新加載程序reload = True# 訪問日志文件accesslog = "/var/log/gunicorn/access.log"# 錯誤日志文件errorlog = "/var/log/gunicorn/error.log"
    

    上述配置中,我們設(shè)置了多個參數(shù),如綁定地址、工作模式、日志位置等等。這只是一個基礎(chǔ)的配置例子,你可以根據(jù)實際需求進(jìn)行修改或擴展。

    然后,你可以通過 -c--config 命令行選項來指明配置文件的路徑,運行 Django 應(yīng)用,如下所示:

    cd /path/to/myproject/
    gunicorn myproject.wsgi -c gunicorn_config.py
    

    該命令告訴 Gunicorn 加載 gunicorn_config.py 文件,并應(yīng)用里面定義的配置。

通過Nginx來做反向代理

gunicorn比起django的runserver要好很多,但是實踐中,一般不會直接將gunicorn直接對外暴露,而是再加一層反向代理,最常用的就是Nginx。

使用Nginx作為反向代理,主要有以下優(yōu)勢:

  1. 靜態(tài)文件處理:Nginx 非常擅長處理靜態(tài)內(nèi)容(如 CSS、JavaScript 文件或圖片),而 Python WSGI 服務(wù)器通常并不適合直接服務(wù)靜態(tài)文件,這可能會引發(fā)性能問題。通過將靜態(tài)文件服務(wù)任務(wù)交給 Nginx,你可以釋放出 Gunicorn 的資源來處理動態(tài)內(nèi)容。

  2. 負(fù)載均衡:如果你有多個后端服務(wù)器或者多個 worker 進(jìn)程,Nginx 可以有效地分配傳入請求到各個后端服務(wù)器上,實現(xiàn)負(fù)載均衡。它還支持多種負(fù)載均衡策略和健康檢查。

  3. 緩沖請求:Nginx 可以為后端提供一層保護,因為它攔截并處理了所有客戶端連接。這意味著后端服務(wù)器只需要處理完整的請求,無需關(guān)心網(wǎng)絡(luò)問題或慢速連接。此外,如果后端應(yīng)用掛掉或重啟,在這段時間內(nèi) Nginx 仍然可以繼續(xù)為用戶提供服務(wù)(例如返回一個友好的錯誤頁面)。

  4. SSL 終止:如果你的網(wǎng)站需要 SSL 加密,Nginx 可以處理所有的 HTTPS 握手過程,并與后端服務(wù)器進(jìn)行非加密通信,這樣就減輕了后端服務(wù)器的負(fù)擔(dān)。

  5. HTTP/2 支持:Nginx 支持 HTTP/2 協(xié)議,而大部分 WSGI 服務(wù)器包括 Gunicorn 目前還沒有直接支持 HTTP/2 的計劃。通過在 Nginx 中開啟 HTTP/2,你的用戶可以享受到更快的加載速度和更低的延遲。

  6. 訪問控制和安全防護:Nginx 提供了一系列安全相關(guān)功能,比如 IP 白名單/黑名單、限速、防止 DDOS 攻擊等。

  7. gzip 壓縮:Nginx 可以對響應(yīng)數(shù)據(jù)進(jìn)行 gzip 壓縮,從而減少網(wǎng)絡(luò)帶寬消耗和提高頁面的加載速度。

下面是使用 Nginx 作為 Gunicorn 的反向代理的詳細(xì)步驟

  1. 安裝 Nginx

    在 Ubuntu/Debian 上,你可以通過 apt-get 來安裝 Nginx:

    sudo apt-get install nginx
    
  2. 配置 Nginx

    配置 Nginx 以使其能正確地將請求轉(zhuǎn)發(fā)到 Gunicorn。Nginx 的設(shè)置文件通常位于 /etc/nginx/sites-available/default。

    下面是一個基本的配置示例:

    server {listen 80;server_name yourdomain.com;location /static/ {alias /path/to/myproject/static/;  # 這里是指向Django中的靜態(tài)文件目錄的}location / {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_pass http://localhost:8000; # 替換成 gunicorn 正在監(jiān)聽的地址和端口號}
    }
    
  3. 啟動 Nginx

    完成配置后,你就可以啟動 Nginx 了:

    sudo service nginx start
    

以上就是基本的流程。當(dāng)然,這只是最簡單的配置,如果你需要更高級的特性(比如 HTTPS、負(fù)載均衡或緩存),則需要進(jìn)行更多的配置。建議查閱 Nginx 官方文檔 獲取更詳細(xì)的信息。

通過Supervisor來托管gunicorn和nginx

我是在第二份工作中才接觸到supervisor的,了解之后就非常喜歡這個工具,最大好處就是托管某一個進(jìn)程,尤其是如果進(jìn)程出現(xiàn)問題死掉了,supervisor會自動嘗試重啟這個進(jìn)程,這個對于線上環(huán)境來說非常重要。

Supervisor 是一個用 Python 寫的進(jìn)程管理工具,可以很方便地用來在 UNIX-like 系統(tǒng)(不支持Windows)下啟動、重啟(自動)和關(guān)閉進(jìn)程。

以下是如何使用 Supervisor 托管 gunicorn 和 nginx 的步驟:

  1. 安裝 Supervisor

    在 Ubuntu/Debian 上,你可以通過 apt-get 來安裝 Supervisor:

     sudo apt-get install supervisor
    
  2. 創(chuàng)建 Supervisor 配置文件

    你需要為每個要由 Supervisor 管理的程序創(chuàng)建一個配置文件。這些文件通常位于 /etc/supervisor/conf.d/ 目錄下,并且以 .conf 結(jié)尾。

    如上假設(shè),Django 項目路徑為 /path/to/myproject/,Gunicorn 的配置文件名為 gunicorn_config.py,那么我們需要為 Gunicorn 創(chuàng)建一個名為 myproject_gunicorn.conf 的文件:

    # /etc/supervisor/conf.d/myproject_gunicorn.conf[program:myproject_gunicorn]
    command=/usr/local/bin/gunicorn myproject.wsgi:application -c /path/to/myproject/gunicorn_config.py
    directory=/path/to/myproject/
    user=yourusername
    autostart=true
    autorestart=true
    redirect_stderr=true
    

    同樣,我們也需要為 Nginx 創(chuàng)建一個名為 nginx.conf 的文件:

    # /etc/supervisor/conf.d/nginx.conf[program:nginx]
    command=/usr/sbin/nginx -g "daemon off;"
    autostart=true
    autorestart=true
    redirect_stderr=true
    
  3. 運行 Supervisor

    安裝完 Supervisor 并創(chuàng)建了相關(guān)的配置文件后,你就可以讓 Supervisor 開始工作了。首先,你需要讀取所有新的或修改過的配置文件:

    sudo supervisorctl reread
    

    接著,你可以更新 Supervisor 服務(wù)的狀態(tài),使其開始運行新添加的程序:

    sudo supervisorctl update
    

    或者,如果你想單獨啟動某個程序,比如 myproject_gunicorn (也就是上面的Django),你可以這樣做:

    sudo supervisorctl start myproject_gunicorn
    
http://www.risenshineclean.com/news/52920.html

相關(guān)文章:

  • 做網(wǎng)站開源框架簡述網(wǎng)絡(luò)推廣的方法
  • 網(wǎng)站域名更換是怎么做的網(wǎng)站是怎么做出來的
  • 可信網(wǎng)站值得做嗎seo推廣專員工作內(nèi)容
  • 河源今日新聞頭條火災(zāi)優(yōu)化設(shè)計四年級上冊語文答案
  • 重慶涪陵網(wǎng)站建設(shè)南寧百度推廣seo
  • 網(wǎng)站推廣方案的構(gòu)成整站優(yōu)化服務(wù)
  • 模板網(wǎng)站音響案例數(shù)字營銷包括哪六種方式
  • 網(wǎng)站內(nèi)容管理系統(tǒng)建站企業(yè)網(wǎng)站
  • 內(nèi)蒙古網(wǎng)站建設(shè)價格輿情網(wǎng)站入口
  • 做視頻網(wǎng)站需要多大帶寬微網(wǎng)站建站平臺
  • 網(wǎng)站建設(shè)維護協(xié)議書北海百度seo
  • 品牌網(wǎng)站建設(shè)精湛磐石網(wǎng)絡(luò)百度登錄賬號首頁
  • 合作建站方案關(guān)鍵詞優(yōu)化和seo
  • 優(yōu)化是企業(yè)通過網(wǎng)站來做嗎怎么制作小程序
  • 幫忙做網(wǎng)站花西子網(wǎng)絡(luò)營銷案例分析
  • 怎么找做網(wǎng)站的人視頻號最新動作
  • 怎么做代理人金沙網(wǎng)站seo的內(nèi)容有哪些
  • 想象力做網(wǎng)站百度官方推廣平臺
  • 房地產(chǎn) 網(wǎng)站模板南寧百度seo優(yōu)化
  • 網(wǎng)站備案入口營銷活動推廣策劃
  • 怎么樣可以設(shè)計網(wǎng)站搜索引擎優(yōu)化的具體措施
  • 天津市城鄉(xiāng)建設(shè)網(wǎng)網(wǎng)站優(yōu)化的意義
  • 手機百度網(wǎng)頁版 入口seo網(wǎng)站優(yōu)化平臺
  • 怎樣在工商局網(wǎng)站做公示網(wǎng)絡(luò)營銷案例及分析
  • 專門做干果批發(fā)的網(wǎng)站國際新聞頭條今日國際大事
  • 東莞網(wǎng)站建設(shè)推廣公司哪家好如何推廣app賺錢
  • 亞馬遜網(wǎng)官網(wǎng)首頁四川seo平臺
  • 做相冊本哪個網(wǎng)站好用嗎短視頻推廣
  • 制作網(wǎng)站公石家莊谷歌seo
  • 做公司網(wǎng)站需要會什么一鍵優(yōu)化表格