Django nginx uwsgi導入

7859 ワード

Django 
DjangoはPythonベースのオープンソースWebアプリケーションフレームワークで、そのMVCが開発した方法で、コードの定義とデータアクセスの方法(モデル)と要求ロジック(コントローラ)とユーザーインタフェース(ビュー)を分離し、同時にデータベースの操作インタフェースをカプセル化し、sqlite 3、MySQL、PostgreSQLなどのデータベースをサポートしている.Djangoアプリケーションを簡単にすることができます.開発段階ではDjangoフレームワークに付属の開発Webサーバを使用し、python manage.py runsercverを使用してサーバを開くことができます.しかし、このフレームワークは本番環境で使用するのに適していないため、DjangoアプリケーションをWebにさらに導入する必要があります.この文書では、nginxとuWSDiを使用してUbuntuにDjangoを配備することについて説明します.
 
uWSGI & Nginx
WGSI全称WebサーバGateway Interface、またはPython WebサーバGateway Interfaceは、Python言語に定義されたWebサーバとWebアプリケーションまたはフレームワークとの間の簡単で汎用的なインタフェースである.WSGIが開発されて以来、多くの他の言語にも同様のインタフェースが登場している.ローカルに複数のウェブサービスがあり、Python、php、javaで記述されている場合、同じポートのリスニングには転送を担当するサービスが必要です.ただしuwsgiは静的リソース処理にはあまり良くないが,1つは性能の問題,2つは各種HTTPリクエストキャッシュヘッダであり,Nginxとの連携が必要である.
Nginxは、軽量レベルのWebサーバ/リバースエージェントサーバおよびEメール(IMAP/POP 3)エージェントサーバであり、BSD-likeプロトコルの下で発行されます.ロシアのプログラムデザイナーIgor Sysoevが開発し、ロシアの大手ポータルサイトと検索エンジンRambler(ロシア語:Рамблер)使用します.メモリの占有量が少なく、コンカレント能力が強いのが特徴で、実際にnginxのコンカレント能力は確かに同じタイプのウェブサーバでよく表現されています.uWSDiと組み合わせて、uWSDiは動的データを処理し、Nginxは静的ファイル、インデックスファイル、自動インデックスを処理します.
 
導入環境
nginx:   nginx -v  -->  nginx version: nginx/1.4.6 (Ubuntu)
  • uWSGI:  uwsgi --version --> 2.0.12
  • Ubuntu:  cat /etc/issue --> Ubuntu 14.04.1 LTS
    \l

  • Python:   python -V --> Python 2.7.6
    Django:   python -c "import django;print(django.VERSION)" --> (1, 8, 4, 'final', 0)

     

    ( uWSGI )

    1. nginx

    sudo apt-get install nginx

    sudo /etc/init.d/nginx start
    sudo /etc/init.d/nginx stop
    sudo /etc/init.d/nginx restart

    sudo service nginx start
    sudo service nginx stop
    sudo service nginx restart

    2. uWSGI

    apt-get install python-dev
    pip install uwsgi
    

    3. Django

    python manage.py runserver 0.0.0.0:8000

    4. uwsgi

    uwsgi --http :8001 --chdir /home/web/EvanLin/  --module EvanLin.wsgi
    #chdir:      module:    chdir   /EvanLin/wsgi.py  

    5. static

    setting.py STATIC_ROOT

    STATIC_ROOT = os.path.join(BASE_DIR, "static/")

    python manage.py collectstatic

    6. nginx

    • uwsgi_params ,uwsgi_params /etc/nginx/
    • mysite_nginx.conf, :
     # mysite_nginx.conf
     # the upstream component nginx needs to connect to
     upstream django {
     # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
     server 127.0.0.1:8001; # for a web port socket (we'll use this first)
     }
     # configuration of the server
     server {
     # the port your site will be served on
     listen 8000;
     # the domain name it will serve for
     server_name .example.com; #       IP  
     charset utf-8;
     # max upload size
     client_max_body_size 75M; # adjust to taste
     # Django media
     location /media {
     alias /path/to/your/mysite/media; # Django   media    
     }
     location /static {
     alias /path/to/your/mysite/static; # Django   static    
     }
     # Finally, send all non-media requests to the Django server.
     location / {
     uwsgi_pass django;
     include /path/to/your/mysite/uwsgi_params; #      uwsgi_params    
     }
     }
    

    nginx media static , django request   /etc/nginx/sites-enabled ディレクトリの に、nginxが できるように、このファイルの を します.

    sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
     

    7.UNIXソケットでDjangoアプリケーションを するmysite_nginx.confについて、 のように します.
    server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)

    nginxを するには:
    sudo /etc/init.d/nginx start #      ,  sudo nginx -t   

    :
    uwsgi --socket mysite.sock --chdir /home/web/mysite/  --module mysite.wsgi --chmod-socket=666 &
    

    8.マルチステーション
    Djangoアプリケーションの と に、 を してください.
    このうち、mysite_nginx.conf のファイルは のように され、 の は され、パスは のプロジェクトディレクトリです.ここで、 listen が するポートは じであってもよく、nginxはserver_name .example.com;に って なるuswgiファイルを する.
     # mysite_nginx.conf
     # the upstream component nginx needs to connect to
     upstream django {
     server unix:///path/to/your/mysite/mysite.sock; # for a file socket
     # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
     }
     # configuration of the server
     server {
     # the port your site will be served on
     listen 80;
     # the domain name it will serve for
     server_name .example.com; #       IP  
     charset utf-8;
     # max upload size
     client_max_body_size 75M; # adjust to taste
     # Django media
     location /media {
     alias /path/to/your/mysite/media; # Django   media    
     }
     location /static {
     alias /path/to/your/mysite/static; # Django   static    
     }
     # Finally, send all non-media requests to the Django server.
     location / {
     uwsgi_pass django;
     include /path/to/your/mysite/uwsgi_params; #      uwsgi_params    
     }
     }

    nginxを するには:
    sudo /etc/init.d/nginx start #      ,  sudo nginx -t   

    :
    uwsgi --socket mysite.sock --chdir /home/web/mysite/  --module mysite.wsgi --chmod-socket=666 & 

    かご がございましたらメッセージをお いいたします
    EvanLin
    は の で、 は に して を て、そして のリンクを してください.