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

1. Virtualenvのインストール

  1. virtualenvをインストールします

pip3 install virtualenv

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

mkdir My
cd My

  1. スタンドアロン環境の作成-命名

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

  1. 仮想環境に入る

source venv1 / bin / activate#この時点で仮想環境に入ります(venv1)

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

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

  1. venv1環境を終了します

deactivate

  1. virtualenvはどのようにして「スタンドアロン」のPythonランタイム環境を作成しますか?原理は非常に単純です。つまり、システムPythonをvirtualenv環境にコピーします。
    コマンド source venv / bin / activateを使用してvirtualenv環境に入ると、virtualenvは関連する環境変数を変更して、コマンドpythonとpipが現在のvirtualenv環境を指すようにします。

2. Django構成

  1. settings.py
DEBUG = False #デバッグが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),'archive') 
# アバターなど、ユーザーがアップロードした静的ファイル

構成が完了したら、 python manage.py collectstaticを実行して、静的ファイルをSTATIC_ROOTディレクトリにロードします。

  1. urls.py
from django.urls import path,re_path
from django.conf import settings
from django.views.staticimport serve
 
urlpatterns =[   re_path(r'^archive/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}, name='archive'), #ユーザーがアップロードしたファイル
 path('favicon.ico', serve,{'path':'img/favicon.ico','document_root':settings.STATIC_ROOT}),
 # グローバルファビコン.icoアイコン
]

**3. uwsgi **をインストールして構成します

  1. 仮想環境venv1に入り、uwsgiをインストールします(仮想環境の外部にインストールすることをお勧めします)

( venv1) [root@localhost ~]# pip3 install uwsgi

  1. 起動ファイルを構成します(任意のディレクトリに配置できます。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
 # メインプロセスのプロセス番号ファイルを構成します(コメントしましたが、スーパーバイザーログと競合すると言われています)
 # pidfile=uwsgi.pid

 # ダンプロギングを構成します(上記と同じ)
 # daemonize=uwsgi.log 
  1. 開始する構成ファイルを指定します

uwsgi –ini /opt/My/venv1/uwsgi.ini

**4. nginx **をインストールして構成します

  1. centos8にnginxをインストールします(yumの直接インストール)

yum install -y nginx

  1. nginx.confを構成します
 user nginx;
 worker_processes 2; #プロセス数
 error_log /var/log/nginx/error.log;
 pid /run/nginx.pid;

 # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
 include /usr/share/nginx/modules/*.conf;

 events {
 worker_connections 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 main;

 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;

 keepalive_timeout 65;
 types_hash_max_size 2048;

 include /etc/nginx/mime.types;
 default_type application/octet-stream;

 # Load modular configuration files from the /etc/nginx/conf.d directory.
 # See http://nginx.org/en/docs/ngx_core_module.html#include
 # for more information.
 # include /etc/nginx/conf.d/*.conf;

 server {
 listen 80;#リスニングポート
 # listen [::]:80 default_server;
 server_name 192.168.3.119;#ドメイン名またはIP
 # root /usr/share/nginx/html;

 # Load configuration files for the default server block.
 # include /etc/nginx/default.d/*.conf;
 charset utf-8;

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

 }

 location / {
 include uwsgi_params;
 uwsgi_pass 0.0.0.0:8000; #プロジェクトのポート番号
 uwsgi_param UWSGI_SCRIPT Myproject.wsgi; #プロジェクトwsgi.pyディレクトリ
 uwsgi_param UWSGI_CHDIR /opt/My/Myproject; #プロジェクトディレクトリ
 }

 }

 }
  1. nginxを開始します

/usr/sbin/nginx

5. スーパーバイザーのインストールと構成

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

pip3 install Supervisor#インストールするためにpython2環境が必要になる前に、pip3を使用して直接インストールできるようになりました。

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

echo_supervisord_conf > /etc/supervisord.conf

  1. 構成ファイルの最後に次のコードを追加します
[ program:myname] #タスク名
 command=/opt/my/venv1/bin/uwsgi --ini /opt/my/venv1/uwsgi.ini
 # 実行されたコマンドはuwsgiを実行します。 uwsgiは仮想環境にあります

 [ program:nginx] 
 command=/usr/sbin/nginx #nginxを実行します
  1. スーパーバイザーを開始
 supervisord -c /etc/supervisord.conf #スーパーバイザーを開始
 supervisorctl -c /etc/supervisord.conf #スーパーバイザーインタラクティブインターフェイスに入る
  1. スーパーバイザーコマンド
 start myname #起動\
 stop myname #やめる>>あなたはタスク名を書くことができますまたはすべてがすべてを意味します
 restart myname #リブート/

これまでのところ、Centos8でのdjangoプロジェクトの展開nginx + uwsgiに関するチュートリアルに関するこの記事が紹介されています。関連するdjangoプロジェクトの展開nginx + uwsgiのコンテンツについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。将来的にはZaLou.Cnをたくさんサポートしてください!

Recommended Posts

Centos8のdjangoプロジェクトにnginx + uwsgiをデプロイするためのチュートリアル
centos6.5でzabbix2.4をインストールするためのチュートリアル図
CentOS7.4でJDK1.8をインストールするためのグラフィカルチュートリアル
CentOS7の下にMesosチュートリアルをインストールします
Ubuntu16.04環境でPython3.6の下にDjangoをインストールするための詳細な手順
CentOS7でのJDK1.8チュートリアルの最小インストール
Centos8はDockerを使用して、Djangoプロジェクトの詳細なチュートリアルを展開します
CentOS7の時刻同期にNTPを使用する
nginx + uwsgiを介してubuntuにdjangoアプリケーションをデプロイします
CentOS7でのJenkinsのインストールと展開のチュートリアル
VMwareでCentOSの静的IPを設定する
Centos7.2でのLDAPの完全な展開レコード
CentOS7にMySQL8をインストールするための詳細なチュートリアル
Ubuntu20.04にPycharm2020.1をインストールするためのグラフィカルチュートリアル
CentOS7のyumにDockerCEをインストールします
歴史上最も完全なcentosインストールチュートリアル
centos8カスタムディレクトリにnginxをインストールします(詳細なチュートリアル)
中級クラスの子供向けにCentOS7にMySQL5.7をインストールしてください!
ローカルyumソースを構成するためのCentOS8詳細チュートリアル
CentOS7のLNMP環境でDiscuzフォーラムを構築する
CentOS 8.1でLEMP(Linux + Nginx + MySQL + PHP)環境を構築する(詳細なチュートリアル)
CentOS7のLNMP環境でDedecmsWebサイトを構築する