1. Virtualenvのインストール
pip3 install virtualenv
mkdir My
cd My
virtualenv –no-site-packages –python = python3 venv1#独立した環境を作成し、インタープリターがpython3であることを指定します
source venv1 / bin / activate#この時点で仮想環境に入ります(venv1)
pip3 install django == 2.11#この時点で、pip3パッケージがvenv1環境にインストールされ、Myproject用にvenv1が作成されます。
pip3 install -r packages.txt
deactivate
source venv / bin / activate
を使用してvirtualenv環境に入ると、virtualenvは関連する環境変数を変更して、コマンドpythonとpipが現在のvirtualenv環境を指すようにします。2. Django構成
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ディレクトリにロードします。
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 **をインストールして構成します
( venv1) [root@localhost ~]# pip3 install uwsgi
# 構成オプションを追加する
[ 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
uwsgi –ini /opt/My/venv1/uwsgi.ini
**4. nginx **をインストールして構成します
yum install -y nginx
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; #プロジェクトディレクトリ
}
}
}
/usr/sbin/nginx
5. スーパーバイザーのインストールと構成
pip3 install Supervisor#インストールするためにpython2環境が必要になる前に、pip3を使用して直接インストールできるようになりました。
echo_supervisord_conf > /etc/supervisord.conf
[ program:myname] #タスク名
command=/opt/my/venv1/bin/uwsgi --ini /opt/my/venv1/uwsgi.ini
# 実行されたコマンドはuwsgiを実行します。 uwsgiは仮想環境にあります
[ program:nginx]
command=/usr/sbin/nginx #nginxを実行します
supervisord -c /etc/supervisord.conf #スーパーバイザーを開始
supervisorctl -c /etc/supervisord.conf #スーパーバイザーインタラクティブインターフェイスに入る
start myname #起動\
stop myname #やめる>>あなたはタスク名を書くことができますまたはすべてがすべてを意味します
restart myname #リブート/
これまでのところ、Centos8でのdjangoプロジェクトの展開nginx + uwsgiに関するチュートリアルに関するこの記事が紹介されています。関連するdjangoプロジェクトの展開nginx + uwsgiのコンテンツについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。将来的にはZaLou.Cnをたくさんサポートしてください!
Recommended Posts