はじめに:参照のブログを参照してください
WSGIはWebサーバゲートウェイインターフェイスです。これは、Webサーバーが要求、Webアプリケーションとの通信、およびWebアプリケーション(受信要求、処理要求、応答要求)を処理するために一緒にリンクされた方法について説明仕様であります
展開プロジェクト.crm(非絶縁前後端アイテム)
1.プロジェクトの展開テクノロジ・スタック
nginxの+ uwsgi +ジャンゴ+仮想環境+スーパーバイザ+ MySQLの
2.フェイス質問1
本番環境では使用しない理由のpython3 manage.pyのrunserverを開始するジャンゴ方法はありますか?
ジャンゴだけウェブロジカルフレームワーク、それはのpython3 manage.pyのrunserverコマンドソケットサーバで起動し
、内蔵のpython WSGIフレームワークwsgirefフレームワークを達成するための手段で
WSGIモジュールをWSGIを開始するには、スタンドアロン、シングル・プロセス・モジュール、低パフォーマンスですマルチスレッド、マルチプロセスプロジェクトは適切ではありません
ので、オンラインこのウェブサーバソフトウェアは、ジャンゴ開始uwsgi C言語で書かれたの必要性
マルチプロセス、マルチスレッド、高パフォーマンスのための方法uwsgiサポートし、より良いDjangoのパフォーマンスを開始しますが、uwsgi静的ファイルはDjangoの解決されません
3.顔の質問2
なぜ、nginxのとuwsgiを使うのか?
nginxの静的ファイルのuwsgiの問題を解決し、高い同時要求をサポートするだけでなく、バックエンドサーバーのセキュリティを保護するために制限する、などができ
uwsgiすべき理由
、uwsgiはマルチスレッド、マルチプロセスモードをサポートしているため、パフォーマンスが非常に高く、より良いDjangoのパフォーマンスを開始しかしuwsgiは静的ファイルをDjangoの解決ではない
、我々はすべての項目が静的ファイルをDjangoの収集します将来的には、nginxのに対処するために投げました
4.コードのCRMを準備
第一層、ファイルビューwsgi.pyにパス
Vimのwsgi.py
この文書からは、関数get_wsgi_applicationを取得、WSGIのジャンゴを呼び出す見ることができ
、この関数を呼び出すことにより、アプリケーションオブジェクトを生成し
、このファイルwsgi.pyモジュールを見つける必要がある、ジャンゴを開始uwsgi時間の間に
、あなたがエラーを求められた場合uwsgiがwsgi.py見つけることができませんので、私は、アプリケーションを見つけることができません
6.仮想環境を作成します。
新しい仮想環境を作成するために使用virtualenvwrapper、CRMを開始するには、新しい仮想環境を準備します
virtualenvwrapperコマンドツール 1 。新しい仮想環境を作成しますが MyCRM mkvirtualenv 2を複数の仮想環境を切り替える。 仮想環境の名前workon 3を仮想環境ディレクトリのすべて一覧表示します。 lsvirtualenv 4 。現在アクティブな仮想環境のディレクトリを入力 cdvirtualenvを
1 。従属仮想環境の問題を解決するために、それが地域の環境を保護し、一貫性のオンライン問題の開発に、ある 窓cmdを窓からローカル入力での PIP3フリーズ > requirements.txt #1のpython3が要件にモジュールインタプリタのすべてをエクスポートすることができます。このファイルTXT 2 。仮想環境にインストールし、サーバにこのファイル転送をrequirements.txt、それが自動的にモジュールのすべての問題解決することができ PIP3がインストール -r requirements.txtを
仮想環境のインストールの下で7 uwsgi
仮想環境へのアクセスを確認し、uwsgiがインストール
nginx_crm workon
ダウンロードuwsgiの
PIP3はuwsgiをインストール
8. Djangoプロジェクトのuwsgiと熱負荷を起動するコマンドを使用します
起動モードコマンドのホットロードは次のようであるサポートuwsgi uwsgi:--http 8000 --module mysite.wsgi --py-自動再= 1 :次のようにプロジェクトを開始するuwsgiジャンゴコマンドを uwsgi --http:8088 - モジュールCrm_Project.wsgiを - HTTP 8088で起動するようにhttpプロトコルポートを指定 - カタログ項目が第二層モジュールを見つけ、wsgi.pyファイル内で 使用すると、HTTPページを開始したい場合は、使用テストアクセスを提供 - HTTPパラメータを使用すると、nginxの逆を組み合わせた場合エージェントは、あなたが使用する必要があります --socketパラメータ 8000 --module Crm_Project.wsgi:uwsgi --socket
9.uwsgi.iniプロフィールを紹介
過度のパラメータに、ここでは第一層のこのアイテムのファイルパスにuwsgi.iniプロファイルと呼ばれる概念を導入する uwsgi.iniを次のようにCRMプロファイルを開始 [uwsgiへ] #ジャンゴ - 関連セッティング #ザ・ベース(ディレクトリフルパスは) 絶対パス#は項目(第1層パス)を埋める のchdir =は/ opt / Crm_Project #ジャンゴ" S WSGIファイル #のCRMは第2層のディレクトリパス内のファイルをwsgi.py埋める のModule1 = Crm_Project.wsgi #virtualenvのを(フル・パス) 絶対パスの仮想環境での#フィル ホーム = /ルート/ ENVS / nginx_crm #プロセス - 関連セッティング #マスター マスター = trueに 数労働者が#1の最大プロセス を最適化するために、CPUによると、#1 uwsgiベースのマルチプロセスを プロセスを = 4 ソケット(フルパスで使用する安全であるとの# あなたはnginxのリバースプロキシを使用する場合#は、ソケットパラメータ記入 あなたが使用している場合は#をnginxのリバースプロキシは、ソケットパラメータ記入 あなたはnginxのは、リバースプロキシのソケットパラメータ記入使用する場合は#を 使用すると、nginxのリバースプロキシを使用する場合は#を、ソケットパラメータ記入 あなたはnginxのリバースプロキシを使用する場合は#を、ソケットを記入しますパラメータの ソケット = 0.0。0.0:8000 #、あなたは、nginxのいないHTTPを使用して、バックエンドをテストするために、ブラウザに指示したい場合は #http = 0.0。0.0:8000 権限で...#適切に - 必要とすることができる 。#chmodの -socket = 664 #終了に関する明確な環境 真空 = 真
uwsgiサポートiniファイル、XML、その他の構成、紙iniファイルの例は、/ etc / 新しいディレクトリuwsgi_nginx.iniは、次の設定を追加します: #ファイルのmysite_uwsgi.ini [uwsgi] #ジャンゴ - 関連セッティング #ザ・ベースディレクトリ(パスのフル) のchdir =は/ opt / 個人用サイト #ジャンゴ" S WSGIファイル のModule1 = mysite.wsgi (フル・パス)#virtualenvの ホーム =は/ opt / Venvの #プロセス - 関連セッティング #マスター マスター = trueに 最大労働者の#数は、プロセス のプロセスを = 1 #ソケット(安全のために完全なパスを使用し たソケット = 0.0。0.0:8000 #...適切な権限を持つ - 必要になるかもしれ #chmodの -socket = 664 の出口に#明確な環境 を真空に = 真 uwsgi.ini
このとき10、経由でブートコードuwsgi --ini uwsgi.ini
静的ファイルと設定のnginxのを11.django
仮想環境 パラメータの以下の記述されたsettings.py編集項目 STATIC_ROOT = 「crmstaticは/ opt / 」
12.ファイル名を指定して実行は、静的ファイルのCRMのすべてを収集します
次のようにコマンドがある
のpython3 manage.py collectstatic
#この時点で、バックエンドの設定が完了しています!!!!nginxのに従事し始めた
#バックエンド構成この時点で完成!!!!nginxのに従事し始めた
#バックエンド構成この時点で完成!!!!nginxのに従事し始めた
#バックエンド構成この時点で完成!!!!nginxのに従事し始めた
#バックエンド構成この時点で完成!!!!私たちは、nginxのに従事し始めました
13.構成しnginxのは、まず、リバースプロキシサポートは、第二は、静的負荷ファイルのサポートであります
ロードされているnginxの設定、まず、プロキシサポートを逆転、第二は、静的なファイルのサポートです nginx.conf変更 コード以下の ユーザーがwww.s18dnf.comにアクセスしたとき、あなたは仮想ホスト入力して#を LOCATION / { uwsgi_pass 0.0。0.0:8000 ;# 8000ポートDjangoのランニングに uwsgi_paramsが含まれ;#固定書か } この場所は、静的ファイルのCRMの問題解決するためにされた# 場所 / 静的を { #aliasパラメータがあるの/ opt /中/静crmstatic、私たちのすべてを検索します静的ファイルの エイリアス は/ opt / crmstatic;#ここでcrmstaticがあるこのSTATIC_ROOT = 'は/ opt / crmstatic'
}
14.再起動nginxの、熱による負荷に、プロジェクトが開始されています
15.バッチ管理ソフトウェアスタート・ストップ・スーパバイザ
スーパーバイザは、もちろん、あなたが直接nohupコマンドは、タスクは自動的にバックグラウンドで実行させ使用することができますが、タスクを再起動する場合、各タスクは手動でプロセスを殺すために、それは自動的にバックグラウンドのさまざまなタスクを実行するために使用されるPythonベースのタスク管理ツールです。退屈な、
しかし、プログラムエラーがプロセスを終了させた後、システムが自動的にタスクを再ロードすることはできません。
16.スーパーバイザーをインストールします。
非仮想環境でのインストールスーパーバイザ スーパーバイザpython2にのみインストールするために使用することができ、インストールするためのpython3使用することはできません
1は、easy_installをインストールする。 PIP3はのpython3パッケージ管理ツールである easy_installをはpython2パッケージ管理ツールで はyumのPythonをインストールする - setuptoolsの 2 インストール監督。 easy_installを監督
17.supervisorプロフィール
1.スーパーバイザコンフィギュレーション・ファイルを作成し、第一層の下にあるプロジェクトパスに次のコードを入力してください echo_supervisord_conf >の/ etc / supervisor.conf 2.変更スーパーバイザコンフィギュレーション・ファイル、uwsgi起動するコマンドを追加する スーパーバイザーを実際に我々は、手動で実行する必要が行わ助けています唯一のコマンドのvim の/ etc / supervisor.conf 一番下に書かれた以下のように記述し、 [s18crmプログラム] コマンド = /ルート/ ENVS / nginx_crm / binに/ uwsgi --iniは/ opt / Crm_Project / uwsgi.ini stopasgroup = trueに killasgroup = trueに
18.試験は、スーパーバイザ始まるuwsgi
テストは、スーパーバイザuwsgiを始め、今回そのuwsgiの出口を確保するためにとられている 。テスト・スーパーバイザーで始まるUwsgi、今回そのuwsgiの出口を確保するためにとられている 。テスト・スーパーバイザーで始まるUwsgi、今回uwsgi終了することを保証するためにとられている テストは、スーパーバイザで始まるuwsgi 、uwsgiから脱退した今回ことを保証するために取られ た仮想環境は、次の2つのコマンドを入力します。 supervisord -cの/ etc / supervisor.conf番号を、これは、サーバ・スーパバイザ起動するコマンドである supervisorctl -cは/ etc / これは、スーパーバイザクライアントであるsupervisor.conf番号を管理コマンドの スーパーバイザの学習コマンド [プログラム:s18crm] s18crm#から#s18crmの状態を確認し、ステータスを s18crm#開始タスクの起動 停止をs18crm#タスクを停止 、すべての起動 すべてのタスクが起動し、すべての#を停止停止