ubuntu Django + Uwsgi + Nginxの実稼働環境の展開

I.概要

runserverを使用すると、djangoプロジェクトをローカルで実行できますが、これにはローカルエリアネットワーク内でのみアクセスできます。djangoを実稼働環境にデプロイする場合は、さらにいくつかの問題を考慮する必要があります。静的ファイル処理、セキュリティ、効率など、この記事では、uwsgi + Nginxに基づくdjangoプロジェクトの実稼働環境の展開について要約します。

uWSGIは[Webサーバー](https://baike.baidu.com/item/Web%E6%9C%8D%E5%8A%A1%E5%99%A8)であり、WSGIプロトコル、uwsgi、http、およびその他のプロトコルを実装します。 NginxのHttpUwsgiModuleの機能は、uWSGIサーバーと交換することです。

WSGI / uwsgi / uWSGIの3つの概念の違いに注意してください。

uwsgiプロトコルは、uWSGIサーバーに固有のプロトコルであり、送信する情報の種類を定義するために使用されます。各uwsgiパケットの最初の4バイトは、送信する情報の種類の説明です。WSGIと比較すると、異なるものです。

準備条件

デフォルトでは、ubuntuにはすでにpython3がありますが、pipはインストールされていません。

apt-get install -y python3-pip

仮想環境をインストールする

pip3 install virtualenv

仮想環境を作成する

sudo mkdir /virtualenvs
cd /virtualenvs
sudo /usr/local/bin/virtualenv -p /usr/bin/python3 --no-site-packages venv

**django ** ###をインストールします

/virtualenvs/venv/bin/pip3 install django

2つ目は、djangoプロジェクトを実行する

djangoプロジェクトを作成する

root@ubuntu:~# mkdir /www
root@ubuntu:~# cd /www/
root@ubuntu:/www# /virtualenvs/venv/bin/django-admin startproject mysite1
root@ubuntu:/www# cd mysite1/
root@ubuntu:/www/mysite1# /virtualenvs/venv/bin/python manage.py startapp blog
root@ubuntu:/www/mysite1# mkdir static

構成ファイルの編集

root@ubuntu:/www/mysite1# vim mysite1/settings.py

すべてのIPのリッスンを許可します。注:「*」は引用符で囲む必要があります

ALLOWED_HOSTS =['*']

ネイティブ起動方式

/virtualenvs/venv/bin/python manage.py runserver 0.0.0.0:8000

ページにアクセス

http://192.168.10.104:8000/

効果は次のとおりです。

**3. uwsgi + django **に基づく実装##

**uwsgi **をインストールします##

/virtualenvs/venv/bin/pip3 install uwsgi

**コマンドを使用してuwsgi ** ##を開始します

まず、上記で開始したDjangoプロジェクトを閉じ、Ctrl + cを使用してキャンセルします。

最初のステップ:djangoプロジェクトに参加する

cd /www/mysite1/

ステップ2:コマンドテストの開始

/virtualenvs/venv/bin/uwsgi --http 0.0.0.0:8000--file mysite1/wsgi.py --static-map=/static=static

パラメータの説明:

注:mysite1は相対パスです。 -ファイルの絶対パスは/www/mysite1/mysite1/wsgi.pyです

このとき、[http://192.168.10.104:8000/](http://192.168.10.104:8000/)にアクセスしてください。

アクセスが正常であれば、プロジェクトは正常に開始されました

uwsgi構成ファイル

Ctrl + cを使用して、uwsgiの起動をキャンセルします。

ステップ1:djangoプロジェクトの同じレベルのディレクトリにuwsgiディレクトリを作成して、関連ファイルを保存します

cd /www/mysite1mkdir uwsgi

プロジェクトの構成は次のとおりです。

mysite1/
├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── mysite1
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── uwsgi
└── static

ステップ2:スクリプトディレクトリに入り、uwsgi.iniファイルを作成します

cd /www/mysite1/uwsgi
vim uwsgi.ini

uwsgi.iniファイルの内容を次のように編集します。

[ uwsgi]

# Django-related settings
# the base directory(full path)
chdir           =/www/mysite1
# Django's wsgi file
module          = mysite1.wsgi
# the virtualenv(full path)
home            =/virtualenvs/venv
# process-related settings
# master
master          =true
# maximum number of worker processes
processes       =1
# pid file
pidfile         =/www/mysite1/uwsgi/uwsgi.pid
# The address and port of the monitor
http            =:8000
# clear environment on exit
vacuum          =true
# The process runs in the background and types the log to the specified log file
daemonize       =/www/mysite1/uwsgi/uwsgi.log

いくつかの非常に重要なパラメータに注意してください

**chdir **プロジェクトディレクトリ、絶対パスを書き込む

**module ** Djangoのwsgiファイル、つまりmysite1 /wsgi.py

ホーム仮想環境ディレクトリ、絶対パスを書き込む

**demoize **プロセスはバックグラウンドで実行され、指定されたログファイルにログを出力します

djangoプロジェクトを開始します

root@ubuntu:~# cd /www/mysite1/
root@ubuntu:/www/mysite1# /virtualenvs/venv/bin/uwsgi --ini uwsgi/uwsgi.ini 
[ uWSGI] getting INI configuration from uwsgi/uwsgi.ini

ファイルを確認してください

root@ubuntu:/www/mysite1# ll uwsgi/
合計金額20
drwxr-xr-x2ルートルート40968 1011年3月:47./
drwxr-xr-x6ルートルート40968 1011年3月:27../-rw-r--r--1ルートルート71781011:41 uwsgi.ini
- rw-r-----1ルートルート20218 1011年10月:47 uwsgi.log
- rw-rw-rw-1ルートルート68 1011年10月:47 uwsgi.pid

ページを更新して、アクセスが正常かどうかを確認します。

uwsgiで一般的に使用される起動コマンド

uwsgi --ini uwsgi.ini #起動
uwsgi --reload uwsgi.pid #リブート
uwsgi --stop uwsgi.pid #シャットダウン

**第四に、Nginxプロキシuwsgi **#

**nginx **をインストールします##

apt-get install -y nginx

構成ファイルの編集

cd /etc/nginx/sites-enabled
vim mysite1.conf

内容は以下の通りです。

server {
 listen 8000;
 server_name localhost;

 # プロジェクトパスuwsgiを指定します
 location /{
  include uwsgi_params; #uWSGIとの通信に使用されるNginxモジュールをインポートします
  uwsgi_connect_timeout 30; #uWSGIに接続するためのタイムアウトを設定します
  uwsgi_pass unix:/www/mysite1/uwsgi/mysite1.sock; #指定されたuwsgisockファイルに対するすべての動的リクエストは直接彼にスローされます
    }

 # 静的ファイルパスを指定します
 location /static/{
  alias /www/mysite1/static/;}}

uwsgi構成の変更

ソケットモードに変更します

cd /www/mysite1/uwsgi
vim uwsgi.ini

内容は以下の通りです。

[ uwsgi]

# Django-related settings
# the base directory(full path)
chdir           =/www/mysite1
# Django's wsgi file
module          = mysite1.wsgi
# the virtualenv(full path)
home            =/virtualenvs/venv
# process-related settings
# master
master          =true
# maximum number of worker processes
processes       =1
# pid file
pidfile         =/www/mysite1/uwsgi/uwsgi.pid
# socket file path(full path)
socket          =/www/mysite1/uwsgi/mysite1.sock
# clear environment on exit
vacuum          =true
# The process runs in the background and types the log to the specified log file
daemonize       =/www/mysite1/uwsgi/uwsgi.log

uwsgiをリロードします

/virtualenvs/venv/bin/uwsgi --reload uwsgi.pid

nginx構成ファイルをロードします

nginx -s reload

ポートを確認してください。8000がnginxに乗っ取られました。

root@ubuntu:/etc/nginx/sites-enabled# netstat -anpt|grep 8000
tcp        000.0.0.0:80000.0.0.0:*               LISTEN      18895/nginx -g daem
tcp        00192.168.10.102:8000192.168.10.105:52556    ESTABLISHED 19135/nginx: worker
tcp        00192.168.10.102:8000192.168.10.105:52557    ESTABLISHED 19135/nginx: worker

ページを更新すると、効果は上記と同じです。

ディレクトリ/ www / mysite1 / staticを入力し、画像を配置しますgirl.jpg

写真にアクセス

http://192.168.10.102:8000/static/girl.jpg

効果は次のとおりです。

この記事の参照リンク:

http://www.py3study.com/Article/details/id/323.html

https://www.jianshu.com/p/07458e99198a

Recommended Posts

ubuntu Django + Uwsgi + Nginxの実稼働環境の展開
Ubuntu環境でのNginxのインストールと展開
ubuntu環境展開プロジェクト
Ubuntu 14.04でのDjango&MySQL環境の展開
Centos-6.5LNMP環境のインストールと展開
Ubuntu16.04でNginx + PHP 7.0 + MySQL環境を構成します
一部のCentosPython実稼働環境デプロイメントコマンド
Ubuntu環境でのSSHのインストールと使用
Cobblerを使用して、CentOS / Ubuntuのバッチ展開を自動化します
ubuntu環境でのMySQLのインストールと簡単な実践(1)
CentOS7環境でのKubernetes(k8s)クラスターの迅速な展開
UbuntuサーバーにMono本番環境をインストールして構成します