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をインストールしてサーバーに接続する際に問題が発生しました

推薦する

MySQL データをエクスポートおよびインポートするための HeidiSQL ツール

場合によっては、SQL へのデータのエクスポートとインポートを容易にするために、特定のツールを使用し...

Linux システムで MySQL データベースの解凍バージョンをインストールして構成する方法

1. ファイルを現在のディレクトリに解凍しますコマンド: tar -zxvf mysql....ta...

CSS マルチレベルメニュー実装コード

これは、Web ページを Windows のスタート メニューなどのデスクトップ プログラムのように...

純粋な CSS3 を使用して、円の動的な光る特殊効果アニメーションを実装するためのサンプル コード

この記事では、主に、円形のダイナミックな光る特殊効果アニメーションを実現するための純粋な CSS3 ...

Mysql の大きな SQL ファイルの高速リカバリ ソリューションの共有

序文MySQL データベースを使用する過程では、データベースのバックアップと復元が必要になることがよ...

一般的なブラウザ互換性の問題(概要)

ブラウザの互換性とは、スタイルの互換性 (CSS)、インタラクションの互換性 (JavaScript...

Linux で SSH 経由でリモート ファイルシステムをマウントする方法の詳細な説明

SSHFS の機能: FUSE(Linux向けの最高のユーザー空間ファイルシステムフレームワーク)を...

JavaScriptのプリミティブ値とラッパーオブジェクトの詳細な紹介

目次序文文章プリミティブ型プリミティブ値ラッパーオブジェクト物体コンストラクタ通常機能(関数)プリミ...

MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します

3 ノード MGR 内の 1 つのノードに異常があり、MGR クラスターに再度追加する必要があるとし...

Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明

質問前回のクロスドメイン リソース共有に関する記事では、ドメイン間で Cookie を送信する場合、...

Ubuntu 20.04 LTS で Java 開発環境を構成する

Java開発キットjdkをダウンロードするJDK のダウンロード アドレスはhttp://www.o...

MySQL カーソル関数と使用法

目次意味カーソルの役割カーソルの使用カーソルの宣言カーソルを開くカーソルデータのトラバースカーソルを...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...

Vue の 2 択タブバー切り替えの新しいアプローチ

問題の説明プロジェクトに取り組んでいるときに、タブ バーの切り替え効果を作成する必要がある場合があり...

Vue 構成リクエストの複数サーバーソリューションの詳細な説明

1. 解決策1.1 インターフェースコンテキストパスの説明2 つのバックエンド インターフェイス サ...