Django nginx uwsgi導入
7859 ワード
Django
DjangoはPythonベースのオープンソースWebアプリケーションフレームワークで、そのMVCが開発した方法で、コードの定義とデータアクセスの方法(モデル)と要求ロジック(コントローラ)とユーザーインタフェース(ビュー)を分離し、同時にデータベースの操作インタフェースをカプセル化し、sqlite 3、MySQL、PostgreSQLなどのデータベースをサポートしている.Djangoアプリケーションを簡単にすることができます.開発段階ではDjangoフレームワークに付属の開発Webサーバを使用し、
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:
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
は の で、 は に して を て、そして のリンクを してください.