Centos8 の Django プロジェクトに nginx+uwsgi をデプロイするチュートリアル

Centos8 の Django プロジェクトに nginx+uwsgi をデプロイするチュートリアル

1. 仮想環境virtualenvのインストール

1. virtualenvをインストールする

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

2. ディレクトリを作成し、プロジェクトファイルを転送する

mkdir マイ
cd マイ

3. 独立したオペレーティング環境の命名を作成する

virtualenv --no-site-packages --python=python3 venv1 #独立した環境を作成し、インタープリターをpython3として指定します

4. 仮想環境に入る

source venv1/bin/activate #仮想環境に入る (venv1)

5. 仮想環境にサードパーティのライブラリをインストールし、必要な環境をインポートします(エクスポートコマンド:pip3 freeze > packages.txt)

pip3 install django==2.11 #この時点で、すべてのpip3パッケージはMyproject用に作成されたvenv1環境にインストールされます
pip3 インストール -r パッケージ.txt

6. venv1環境を終了する

無効にする

7. virtualenv はどのようにして「独立した」 Python ランタイム環境を作成するのでしょうか?原理は非常にシンプルで、システムのPythonをvirtualenv環境にコピーするだけです。
コマンドsource venv/bin/activateを使用して virtualenv 環境に入ると、virtualenv は関連する環境変数を変更し、コマンド python と pip の両方が現在の virtualenv 環境を指すようにします。

2. Djangoの設定

1.設定.py

DEBUG = False #debug が false に変更されました

ALLOWED_HOSTS = ['*'] # アクセスアドレスを「*」に変更してすべてを示す STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR),"static")
 #nginxがアクセスするディレクトリは、前の静的ディレクトリに配置されます。絶対パスをカスタマイズできます STATIC_URL = '/static/' 
STATICFILES_DIRS = [os.path.join(BASE_DIR,"static"),]

MEDIA_URL = '/archive/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'アーカイブ') 
#アバターなどユーザーがアップロードした静的ファイル

設定が完了したら、 python manage.py collectstaticを実行して、静的ファイルを STATIC_ROOT ディレクトリに読み込みます。

2.urls.py

django.urls から path、re_path をインポートします
django.confから設定をインポートする
django.views.static からインポートします
 
urlパターン = [
   re_path(r'^archive/(?P<path>.*)$', サーブ, 
{'document_root': settings.MEDIA_ROOT}, name='archive'), #ユーザーがアップロードしたファイルのパス('favicon.ico', serve,{'path': 'img/favicon.ico','document_root':settings.STATIC_ROOT}),
 #グローバル favicon.ico アイコン]

3. uwsgiをインストールして設定する

1. 仮想環境 venv1 に入り、uwsgi をインストールします (仮想環境の外でインストールするのが最適です)

(venv1) [root@localhost ~]# pip3 uwsgi をインストール

2. スタートアップ ファイルを設定します (任意のディレクトリに置くことができますが、私は venv1 に置きました)
uwsgi は、ini や xml などの複数の設定方法をサポートしています。この記事では、ini を例に挙げます。/etc/ ディレクトリに新しい uwsgi.ini を作成し、次の設定を追加します。

 #設定オプションを追加する [uwsgi]
 #ソケット接続をnginx socket=127.0.0.1:8000に設定します
 #http=0.0.0.0:8000 #http 接続 #プロジェクト パス (プロジェクトが配置されているディレクトリ) を設定します chdir = /opt/My/Myproject

 #wsgiインターフェースモジュールのファイルパス、つまりwsgi.pyファイルが配置されているディレクトリ名を設定します。wsgi-file = Myproject/wsgi.py
 #開始するプロセスの数を設定します processes=4
 #各プロセスのスレッド数を設定します threads=2
 #スタートアップ管理マスタープロセスを構成する master=True
 #仮想環境ディレクトリ home=/opt/My/venv1
 #メインプロセスを格納するためのプロセス番号ファイルを設定します(スーパーバイザーログと競合すると言われているのでコメントアウトしました)
 #pidファイル=uwsgi.pid

 #ダンプログを構成する(上記と同じ)
 #デーモン化=uwsgi.log

3. 設定ファイルを指定して開始する

uwsgi --ini /opt/My/venv1/uwsgi.ini

4. nginxをインストールして設定する

1. Centos8 に nginx をインストールする (直接 yum インストール)

yum インストール -y nginx

2. nginx.confを設定する

 ユーザー nginx;
 worker_processes 2; #プロセス数 error_log /var/log/nginx/error.log;
 pid /run/nginx.pid;

 # 動的モジュールをロードします。/usr/share/doc/nginx/README.dynamic を参照してください。
 /usr/share/nginx/modules/*.conf をインクルードします。

 イベント {
 ワーカー接続 1024;
 }

 http {
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';

 access_log /var/log/nginx/access.log メイン;

 ファイル送信オン;
 tcp_nopush オン;
 tcp_nodelay オン;

 キープアライブタイムアウト65;
 タイプハッシュの最大サイズは2048です。

 /etc/nginx/mime.types を含めます。
 デフォルトタイプ アプリケーション/オクテットストリーム;

 # /etc/nginx/conf.d ディレクトリからモジュール構成ファイルを読み込みます。
 # http://nginx.org/en/docs/ngx_core_module.html#include を参照してください
 詳細については#をご覧ください。
 /etc/nginx/conf.d/*.conf を #include します。

 サーバー{
 listen 80;#listenポート#listen [::]:80 default_server;
 server_name 192.168.3.119;# ドメイン名またはIP
 nginx を /usr/share/html にコピーします。

 # デフォルトのサーバー ブロックの構成ファイルを読み込みます。
 /etc/nginx/default.d/*.conf を追加します。
 文字セット utf-8;

 場所 /static {
 alias /opt/My/static; #静的ファイルアドレス (STATIC_ROOT)

 }

 位置 / {
 uwsgi_params を含めます。
 uwsgi_pass 0.0.0.0:8000; #プロジェクトポート番号 uwsgi_param UWSGI_SCRIPT Myproject.wsgi; #プロジェクトwsgi.pyディレクトリ uwsgi_param UWSGI_CHDIR /opt/My/Myproject; #プロジェクトディレクトリ}

 }

 }

3. nginxを起動する

nginx のディレクトリは /usr/sbin/nginx です。

5. スーパーバイザーをインストールして構成する

1. スーパーバイザーをインストールする

pip3 install supervisor # 以前はインストールにpython2環境が必要でした。今はpip3で直接インストールできます

2. コマンドを使用してetcディレクトリに設定ファイルを生成します(カスタマイズ可能)

echo_supervisord_conf > /etc/supervisord.conf

3. 設定ファイルの最後に次のコードを追加します。

[プログラム:myname] #タスク名 command=/opt/my/venv1/bin/uwsgi --ini /opt/my/venv1/uwsgi.ini
 #実行されたコマンドはuwsgiを実行します。 uwsgiは仮想環境にあります[プログラム:nginx] 
 command=/usr/sbin/nginx #nginxを実行

4. スーパーバイザーを起動する

 supervisord -c /etc/supervisord.conf #スーパーバイザーを起動する
 supervisorctl -c /etc/supervisord.conf #スーパーバイザ対話型インターフェースに入る

5. 監督者の指揮

 開始 myname #開始\
 stop myname #停止>> タスク名またはallと書いてすべてを指定することができます restart myname #再起動/

Centos8 の Django プロジェクトに nginx+uwsgi をデプロイする方法に関するチュートリアルはこれで終わりです。Django プロジェクトに nginx+uwsgi をデプロイする方法に関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx+Uwsgi+Djangoプロジェクトをサーバーにデプロイするアイデアの詳細な説明
  • Django プロジェクト uwsgi+Nginx ナニーレベル デプロイメント チュートリアル実装
  • uwsgi+nginx を使用した Django プロジェクトのデプロイ例
  • Django 8.5 プロジェクトのデプロイメント - Nginx

<<:  JavaScript マウスイベントのケーススタディ

>>:  Win10にmysql8.0.15 winx64をインストールしてサーバーに接続する際に問題が発生しました

推薦する

Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...

resizeを使用して画像切り替えプレビュー機能を実装する方法

要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...

TypeScript における列挙型の理解と応用シナリオ

目次1. 何ですか2. 使用数値列挙文字列列挙異種列挙自然3. 応用シナリオ要約する1. 何ですか列...

MySql 5.6.36 64 ビット グリーン バージョンのインストール グラフィック チュートリアル

MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...

Vueは単純なランダムロールコールを実行します

目次レイアウト部分: <div id="アプリ"> <p>...

アバター変更機能を実装するJavaScript

この記事では、アバター変更機能を実装するためのJavaScriptの具体的なコードを参考までに共有し...

Linux で MySQL スケジュールタスクを実装する方法

前提: ストアド プロシージャは、毎日午後 10 時から午前 5 時まで 10 分ごとに実行されます...

MySQLオンラインDDLの使用に関する詳細な説明

目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...

MySQL 5.7 JSON 型の使用の詳細

JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、...

MySQLのGROUP BYステートメントを最適化する方法

MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...

MySQL データベース グループ クエリの group by ステートメントの詳細な説明

1: グループ化関数の記述順序 1 選択 ... 2 から ... 3 どこで ... 4 グループ...

MySQL ストアド プロシージャで case ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの case ステートメントの使用方...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

JS のオブジェクトリテラルの詳細な説明

目次序文1. オブジェクト構築にプロトタイプを設定する1.1 __proto__ の使用における特殊...

Vue でスクロールバーのスタイルを変更する方法

目次まず、スクロール バーのスタイルを変更するには、疑似要素-webkit-scrollbarを使用...