首頁 後端開發 php教程 nginx+gunicorn+django

nginx+gunicorn+django

Aug 08, 2016 am 09:30 AM
app django gunicorn nbsp

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">官方地址:http://gunicorn.org/</span>
登入後複製
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">                  http://docs.gunicorn.org/en/19.2/</span>
登入後複製

參考網址:http://www.cnblogs.com/ArtsCrafts/p/gunicorn.html

               言介紹

    WSGI Server有哪些:

        Flask、webpy、Django、CherryPy 都附有WSGI Server 。當然效能都不好,自帶的web server更多的是測試用途, 線上發佈時,則使用高效能的 wsgi server或者是聯合nginx做uwsgi 。


    

二、安裝gunicorn

     ~$ sudo pip install gunicorn

        ~$ sudo pip install greenlet

     ~$ sudo pip install eventlet

     ~$ sudo pip install gevent

說明:如果安裝greenlet失敗的話,你需要安裝Python headers

    ~$ sudo apt-get llll python-devadm 可以看看orn - -version

          gunicorn (version 19.1.1)

二、gunicorn 指令使用

    成功安裝gunicorn 之後有以下三個指令使用或直接使用、用來啟動指令」,用來啟動指令。

    1. gunicorn


        Gunicorn server中最基本的指令,直接使用最基本的 wsgi application 。

        用法:gunicorn [OPTIONS] APP_MODULE

        OPTIONS 選用參數 運行gunicorn的設定選項,後面會講到。

        APP_MODULE 指定 wsgi application檔案,書寫格式 $(MODULE_NAME):$(VARIABLE_NAME)。其中 module_name用來指定將要執行的 wsgi application檔案,可是一個完整的點綴名稱。

        

例如目前目錄myapp目錄下有個python包gunicorn_app, gunicorn_app包下有一個wsgi application文件test.py。

        則module_name可以直接寫成gunicorn_app.test。

        variable_name表示在module_name檔案中要呼叫的物件(是一個WSGI callable,可以是一個函數)名稱。

        依照上面的例子,目前目錄為/home/workspace/myapp,myapp中有一個套件gunicorn_app,test.py程式碼如下:

def app(environ, start_response):
    """Simplest possible application object"""
    data = 'Hello, World!\n'
    status = '200 OK'
    response_headers = [
        ('Content-type','text/plain'),
        ('Content-Length', str(len(data)))
    ]
    start_response(status, response_headers)
    return iter([data])
登入後複製
     我們會執行testtest.pyp. app

    2. gunicorn_django

        guniorn_django指令是用來將Django app部署到Gunicorn Server上的。

        其實也非常簡單,原理和 gunicorn一樣,只是gunicorn_django做了特殊處理,使得更加適合Django。


        基本用法:gunicorn_django [OPTIONS] [SETTINGS_PATH]

        OPTIONS 前面已經說過了。

        SETTINGS_PATH django app中 settings.py檔案所在的目錄,不寫的話預設在目前目錄下查找。

        不過這種用法適用於django1.4以前,對於Django1.4版本以後強烈建議使用gunicorn指令。

        

    3. gunicorn_paster

        此指令有興趣到官方文件中研究。


三、Gunicorn配置

     Gunicorn從三個不同的地方讀取設定資訊。

     第一個地方:從framework定義的設定資訊讀取,目前只對Paster架構有效。

     第二個地方:在命令列中定義,命令列中定義的設定資訊將會覆寫框架中定義的相同的參數名稱的值。

     第三個地方:建立一個設定文件,把設定資訊寫入文件(是一個python原始文件,所以你就像在寫python程式碼一樣)。

     透過gunicorn -h 查看所有指令設定資訊

      內容

     gunicorn --workers=4 --bind=127.0.0.1:8000 myapp.gunicorn_app.test:app

     上面的指令啟動4個workers,綁定至127.0.0.1:80是一個config.py設定檔原始碼:

     
import multiprocessing

bind = "127.0.0.1:8001"
workers = multiprocessing.cpu_count() * 2 + 1
登入後複製

     gunicorn --config=config.py myapp.gunicorn_app.test:app

四、gunicorn框架介紹

     Gunicorn是基于pre-fork模型的。也就意味着有一个中心管理进程(master process)用来管理worker进程集合。Master从不知道任何关于客户端的信息。所有请求

和响应处理都是由worker进程来处理的。

     Master(管理者)

     主程序是一个简单的循环,监听各种信号以及相应的响应进程。master管理着正在运行的worker集合。

     Worker类型

     1. Sync Workers

         最基本的也是默认的worker type。

         一个同步的worker class,同一时间只能控制一个request请求。

     2. Async Workers

        异步workers的使用是基于Greenlets(通过Eventlet和Gevent)。所以使用此worker type之前一定要安装好python对应的包。

        Greenlets是python多线程协作的一个实现。

     3. Tornado Workers  

         这是一个Tornado worker class。

     

五、Gunicorn部署

       使用Gunicorn必须基于一个代理服务器。

       1. Nginx Configuration

           虽然有很多HTTP代理可以使用,但是我们还是强烈推荐Nginx。如果你选择了其他代理服务器,你需要确认,当你使用默认的Gunicorn workers时,它能够buffers slow clients。没有buffering Gunicorn将很容易受 denial of service attacks的影响。也可使用 slowloris 去核实你的代理服务器是否工作良好。

         如下是一个nginx配置文件实例(假设127.0.0.1:8888端口已经被gunicorn绑定监听):

server {
        #listen   80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6
        listen 80;
        client_max_body_size 4G;
        server_name www.android_stat.com

        keepalive_timeout 5;



        location / {
                try_files $uri @proxy_to_app;
        }

        location @proxy_to_app {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://127.0.0.1:8888;
        }
登入後複製
六、监控Gunicorn

       注意:要监控Gunicorn的时候,Gunicorn不能启动daemon模式,如果使用daemon模式会fork出一个进程,这样监控工具就没法监控这个进程。

       我在这只介绍supervisor

      1. Supervisor

          Supervisor可以用来监控进程,下面是一个简单的supervisor的配置文件:

[program:gunicorn]
command=/path/to/gunicorn main:application -c /path/to/gunicorn.conf.py
directory=/path/to/project
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
登入後複製

       

    

以上就介绍了nginx+gunicorn+django,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

京東商城APP如何進行實名認證 京東商城APP如何進行實名認證 Mar 19, 2024 pm 02:31 PM

京東商城APP實名認證怎麼搞?京東商城是許多朋友常用的網路購物平台,大家在購物前,最好先進行實名認證,這樣才能享受到完整的服務,獲得更好的購物體驗。以下帶來京東商城實名認證方法,希望對網友們有幫助。 1.安裝並開啟京東商城,接著登入個人帳號;2、然後點選頁面下方【我的】,進入個人中心頁面;3、之後再點選右上角的【設定】小圖標,前往設定功能介面;4、選擇【帳號與安全】這一項,來到帳戶設定頁面;5、最後再點擊【實名認證】選項,前往填寫實名資訊;6、安裝系統要求填寫個人真實信息,完成實名認證

Django vs. Flask:Python Web框架的比較分析 Django vs. Flask:Python Web框架的比較分析 Jan 19, 2024 am 08:36 AM

Django和Flask都是PythonWeb框架中的佼佼者,它們都有著自己的優點和適用場景。本文將對這兩個框架進行比較分析,並提供具體的程式碼範例。開發簡介Django是一個全功能的Web框架,它的主要目的是為了快速開發複雜的Web應用。 Django提供了許多內建的功能,例如ORM(物件關聯映射)、表單、認證、管理後台等。這些功能使得Django在處理大型

註冊香港AppleID的步驟及注意事項(享受香港AppleStore的獨特優勢) 註冊香港AppleID的步驟及注意事項(享受香港AppleStore的獨特優勢) Sep 02, 2024 pm 03:47 PM

在全球範圍內,Apple公司的產品和服務一直備受用戶喜愛。註冊一個香港AppleID將帶給用戶更多的便利和特權,讓我們一起來了解一下註冊香港AppleID的步驟以及需要注意的事項。如何註冊香港AppleID在使用蘋果設備時,許多應用程式和功能都需要使用AppleID進行登入。如果您想下載香港地區的應用程式或享受香港AppStore的優惠內容,那麼註冊一個香港AppleID就非常必要。本文將詳細介紹如何註冊香港AppleID的步驟以及需要注意的事項。步驟:選擇語言與地區:在蘋果設備上找到「設定」選項,進入

Django框架的優點和缺點:您需要知道的一切 Django框架的優點和缺點:您需要知道的一切 Jan 19, 2024 am 09:09 AM

Django是一個完整的開發框架,該框架涵蓋了Web開發生命週期的各個方面。目前,這個框架是全球最受歡迎的Web框架之一。如果你打算使用Django來建立自己的Web應用程序,那麼你需要了解Django框架的優點和缺點。以下是您需要知道的一切,包括具體程式碼範例。 Django優點:1.快速開發-Djang可以快速開發Web應用程式。它提供了豐富的庫和內

中國聯通app怎麼退訂流量包 中國聯通怎樣退訂流量包 中國聯通app怎麼退訂流量包 中國聯通怎樣退訂流量包 Mar 18, 2024 pm 10:10 PM

中國聯通app能夠輕鬆的滿足大家的使用,多樣的功能,解決你們的需求,想要辦理各種業務,都可以在這裡輕鬆的搞定,有不需要的都可以在這裡及時的退訂掉,有效的避免後續的損失,很多人在使用手機時,有時感覺流量不夠用,就購買了額外的流量包,但下個月又不想要要,就想要馬上的退訂掉,在這裡小編為大家提供退訂的方法,讓需要的朋友們,都可以來使用起來!  在中國聯通app中,找到右下角的「我的」選項,點擊它。  在我的介面裡,滑動我的服務一欄,點擊其中的「我已訂購」選

如何升級Django版本:步驟與注意事項 如何升級Django版本:步驟與注意事項 Jan 19, 2024 am 10:16 AM

如何升級Django版本:步驟和注意事項,需要具體程式碼範例引言:Django是一個功能強大的PythonWeb框架,它持續地進行更新和升級,以提供更好的效能和更多的功能。然而,對於使用較舊版Django的開發者來說,升級Django可能會面臨一些挑戰。本文將介紹如何升級Django版本的步驟和注意事項,並提供具體的程式碼範例。一、備份項目檔案在升級Djan

多點app如何開發票 多點app如何開發票 Mar 14, 2024 am 10:00 AM

發票作為購物憑證,對於我們的日常生活和工作都至關重要。那麼我們平常在使用多點app進行購物的時候,如何在多點app中輕鬆開立發票呢?下文中本站小編將為大家帶來詳細的多點app開立發票詳細操作步驟攻略,想要了解的用戶們千萬不容錯過,快來跟著文本一起操作了解一下吧!在【發票中心】點選【多點超市/自由購】在已完成的訂單頁中選擇需要開立發票的訂單,點選下一步填寫【發票資訊】,【收件者資訊】,確認無誤後點選提交過個幾分鐘後,進入收件信箱,打開郵件,點選電子發票下載地址最後,下載列印電子發票

Blackmagic 的專業級視訊應用程式登陸 Android,但您的手機可能無法運行它 Blackmagic 的專業級視訊應用程式登陸 Android,但您的手機可能無法運行它 Jun 25, 2024 am 07:06 AM

Blackmagic Design 終於將其廣受好評的 Blackmagic Camera 應用程式帶到了 Android 平台。專業攝影機應用程式可免費下載,並提供完整的手動控制。這些控制旨在讓您更輕鬆地獲得專業級 cin

See all articles