ジャンゴ+ gunicorn + nginxの生産の展開

はじめに1.1 gunicorn

   1、Gunicorn

      1. Gunicornが直接HTTPサービスを提供し、PythonのWSGIサーバを使用して実装、およびwoker、gevent、eventletこれらの支持体上でのさまざまなオプションを提供しています

      同じ時間でのマルチ最大化ワーカー2. CPUは、あなたはまた、より有利なネットワークIO集約型のサービスの同時サポートを提供するためにコルーチンを使用することができます。

      説明:

        1)Gunicornも容易にそのような労働者のクラスを書き換えるドージェとして、TCPベースのサービスに転換しています。
        2)不均一な負荷を避けるために、長いサービス、最高のオープンreuse_port、ワーカープロセスのために接続した場合。

   2、uWSGIとGunicorn

      Gunicorn異なる1は、uWSGIは、ワーカープロセスは、システムインタフェースを実現するためにC言語を使用して、そのソケットは、作成開始FD、Cで書かれています

      プロセスワーカー処理ループ2.は、HTTP要求が生成Pythonが環境オブジェクトCインタフェースを使用して解析しました

      パラメータが露出WSGIアプリケーション機能を詰め3.次に、このオブジェクトを呼び出します。

      4.そして、Cプログラムでこのすべてが、Pythonの仮想マシンのアプリケーションを呼び出すための要求に対処します。

      5.完全にC言語を使用してのメリットを実現パフォーマンスが良くなるです。

  Gunicornと3、uWSGIの性能比較

    1)説明

        ABテストのためのツールを試験応力は、売却の静的ファイルnginxのフロントは、
        両方とも2process + 2thread、圧力100〜1000を使用しています。

    2)試験結果

        参考ブログ:https://jinzhao.me/archives/470

        ;貧しい人々にはほとんどかかり1. Aの合計は、この差は何も証明しない
        2.両方のすべての要求を完了した、2000年の2つの方法で崩壊するために選ばれた1000年についてはこちらを備え、
        uwsgiは勝つ3.平均時間ここでの違いは明白ではないですが、また、ショーはuwsgiの全体的なパフォーマンスが徹底的行うこと;
        4.接続時間は、両方の1000年に大幅に苦労しているが、uwsgiは、より良い実行、私は、独自のプロトコルでも関係を持って使用するC uwsgiに加えて考えます;
        最後に5.、そして最も重要なのは、有意に優れた高度同時、uwsgiパフォーマンスで、
        6 gunicornの手は、80%以下が、その効果の通常の流れで、より良い範囲が重要であることは興味深い
        7 100msのかなり印象的な、私はこれが私達がすべてそれにgunicorn主な理由だと思います。

1.2ジャンゴ+ Gunicorn + nginxの生産の展開

  図1に示すように、環境のpython3のCentOSのに装着されている7

1、ソースヤムヤム更新
更新YUM
 2、Pythonの3.7インストールまたはインストールが必要後はPIP3パッケージ依存しない 
yumをインストールZLIB-develのBZIP2-develの OpenSSLの-develののncurses-develのSQLiteの-develのreadlineの-develのTK-develのlibffi- メイクのgccのdevel
 3、必要なバージョンをダウンロードするための公式ウェブサイトは、ここでの3.7.0バージョンです 
wgetのhttps://www.python.org/ftp/3.7.0/Python-3.7.0.tgz
1、インストール依存&python3.7のダウンロード
1、ソースヤムヤム更新
更新YUM
 2、Pythonの3.7インストールまたはインストールが必要後はPIP3パッケージ依存しない 
yumをインストールZLIB-develのBZIP2-develの OpenSSLの-develののncurses-develのSQLiteの-develのreadlineの-develのTK-develのlibffi- develのメイクgccの
 3、必要なバージョンをダウンロードするための公式ウェブサイトは、ここでの3.7.0バージョンである 
wgetのhttps://www.python.org/ftp/3.7.0/Python-3.7 .0.tgz
   2は、Pythonのインストール

1、抽出 
のPython-3.7 -xvfタール.0.tgzを

2、編集の構成を 
CD-のPython 3.7 0.0のpython3のに/設定--prefix =は/ usr / local /   コンパイルパス構成(本明細書で命名は、コンパイルと--prefixフォルダにインストールされている) 
は./configure --enable-最適化は、   コードを実行した後、コンパイラがインストールされます/ usr / local / binに/、ソフトリンクや環境変数を追加していない 
メイク&& make installをします
LNのpython3に-sを/ usr / local / / binに/へのpython3は/ usr / binに/のpython3のに   柔軟な接続を追加 
LNのpython3に-sを/ usr / local / / binに/ PIP3は/ usr / binに/ PIP3

3、は/ usr / local /のpython3 / binには、PATHに追加 
[TestProj @ルートのLinuxノード1] のVimは/ etc / profileの
#は、ファイルの末尾に追加された 
エクスポートPATH = $ PATH:のpython3 /には/ usr / local / binに

[Linuxの@ルートは TestProj -node1] ソースは/ etc / profileを#変更した後、構成情報に環境変数を作成する必要が、コマンドを実行します
2、インストールのPython

  2、Djangoプロジェクトを初期化します

[ルート@のlinux-ノード1 /] PIP3インストールジャンゴ== 2.0.4 
[ルート@のlinux-ノード1 /] MKDIR /コード/ 
[ルート@のlinux-ノード1 /] CD /コード/ 
[ルート@のlinux-node1のtestProj ] ジャンゴ-adminのstartprojectのmmcsite 
のlinux-node1のtestProj] @ [ルート#のCD /コード/ mmcsite 
[linuxの-node1の@ルートtestProj] のpython3 manage.pyのrunserver 0.0.0.0:8000 页面中访问ます。http://192.168 .56.11:8000 /
Djangoプロジェクトを初期化します

  3、インストールしてサービスを開始Gunicorn uWSGIを使用

[Linuxベースのノード1 @ mmcsiteルート]   PIP3はgunicorn#Gunicornをインストールするインストール 
[Linuxのルート・ノード1 mmcsite @] ラインをテストするgunicorn mmcsite.wsgi 0.0.0.0:8000 -w -b#コマンドを3 
〜C     #はプロファイルを指定します(PYファイル) 
-b     指定されたソケットにバインド 
-D     Gunicornプロセスを実行しているデーモンの形では、実際には、背景にこのサービスが実行する 
-w     #のプロセスに仕事の数 
-k     #の作業プロセスの種類を、 。同期(デフォルト)、eventlet、gevent、またはトルネード、GThread、gaiohttpの
#の参照:HTTP://docs.gunicorn.org/en/latest/settings.html 
[Linuxの-node1のmmcsite @ルート]   PS -ef | grepを#ビューgunicornプロセスがすでに実行されているgunicorn
インストールGunicorn
[ルート@のlinux-node1のmmcsite]   vimの/code/mmcsite/gunicorn_config.py#Gunicorn配置文档gunicorn_config.py 
インポートログ
 輸入logging.handlersで
 から logging.handlersでは、インポートWatchedFileHandler
 インポートのOS
 インポートマルチプロセッシングを
バインド = ' 0.0.0.0:8000 '            バインディングIPアドレスとポート 
= 512のバックログ                    #を聞くキュー 
のchdir = ' /コード/ mmcsite '          #の作業ディレクトリ・オブジェクトへのスイッチへのgunicorn 
タイムアウト= 30                     タイムアウト 
worker_class = ' GEVENT '          同期モードを使用することができる、geventモードを使用して、デフォルトの同期モードは、

労働 = multiprocessing.cpu_count()。1つの* 2 +      プロセスの数 
= 2スレッド                                        プロセスオープンあたりのスレッドの指定された数 
のLogLevel = 情報                                 ログレベルは、エラーログのレベルを意味するログレベルは、アクセスログのレベルが提供されていない 
access_log_format = ' %(T)S%(P)S%(H)は%(S) "%(R&LT)はS" S %S(L)S%(B)%S(F)S "" %(A)S " '  
ACCESSLOG = " /code/mmcsite/gunicorn_access.log "       #のアクセス・ログ・ファイルの 
エラーログ= " /コード/ mmcsite / gunicorn_error .logに        #のエラーログファイル
/mmc/site/gunicorn_config.py Gunicornプロフィール
[ルート@ Linuxの-node1のmmcsite]   gunicorn mmcsite.wsgi -D -c gunicorn_config.py    バックグラウンドでGunicorn実行を使用して#プロジェクト 
[ルート@をLinuxの-node1のmmcsite]   PS -ef | grepをgunicorn                              #ビューGunicornプロセスがすでに実行されてい
ます。http: //192.168.56.11:8000/

  4、インストール構成nginxの

'' ' 設定nginxのYUMソース' '' 
[ルート@ Linuxの -node1 /] Vimの/etc/yum.repos.d/ nginx.repo
`` `
[nginxの】
名前 = nginxのレポ
 のような独自のオペレーティングシステムに応じて変更され、次のラインのCentOS、:OS / rehel 6は、Linuxシステムのバージョンである、あなたはのURLを通じて正しいパスを表示することができ 
//nginx.org/packages/centos:BASEURL = HTTP / 7 / $ basearch / 
gpgcheck = 0
有効 = 1
`` `
'' ' 2. nginxのをインストールしてください' '' 
[Linuxの@ルートのyum -Yインストールnginxの-node1 /]
nginxのインストール
[Linuxの-node1の@ルートをmmcsite] Vimの/etc/nginx/conf.d/dj_gunicorn.conf設定nginxのプロキシGunicorn
サーバー{
        聞く 8005 ;
        ルート / WWW / デモ。
        SERVER_NAME 127.0.0.1 ;
        位置 / {
            proxy_set_header X -Real- IP $ REMOTE_ADDR。
            proxy_set_header X -Forwarded- のために$ proxy_add_x_forwarded_for。
            proxy_set_headerホスト$ HTTP_HOST。
            HTTP proxy_pass: // localhostを:8000 /; バインドされたポート番号gunicorn 
        }
         設定静的の静的ファイル: 
        LOCATION〜^ \ /静的\ /.* $ {
            ルート / WWW / デモ。
        }
}
[ルート@ Linuxの -node1 mmcsite]   gunicorn mmcsite.wsgi -D -c gunicorn_config.py    バックグラウンドでGunicorn実行を使用して#プロジェクト 
[ルート@をLinuxの-node1のmmcsite]   PS -ef | grepをgunicorn                              #ビューGunicornプロセスがすでに実行されてい
ます。http: //192.168.56.11:8005/

 

おすすめ

転載: www.cnblogs.com/jiaxinzhu/p/12571906.html