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
/virtualenvs/venv/bin/pip3 install 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
ページにアクセス
効果は次のとおりです。
/virtualenvs/venv/bin/pip3 install 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/)にアクセスしてください。
アクセスが正常であれば、プロジェクトは正常に開始されました
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 **プロセスはバックグラウンドで実行され、指定されたログファイルにログを出力します
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 #シャットダウン
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/;}}
ソケットモードに変更します
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