uwsgiの初期設定

2022/02 の作業


NGINXとDjangoを連携して使う場合、uwsgiでDjangoを起動して連携するらしい。


1.uwsgiのインストール

(work_venv) $ pip install uwsgi
・・・・
Installing collected packages: uwsgi
    Running setup.py install for uwsgi ... done
Successfully installed uwsgi-2.0.19.1



2.uwsgi.iniの設定

前回起動したrunserverの方は

(work_venv) $ grep "DJANGO_SETTINGS_MODULE" ~/worksite/manage.py
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "worksite.settings.dev")


wsgi.py の方は

(work_venv) $ grep "DJANGO_SETTINGS_MODULE" ~/worksite/worksite/wsgi.py
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "worksite.settings.prod")



で分けているみたいだ。

そんで、起動時に引数で指定するので、どこでもいいみたいだがuwsgi.iniを作成する。

(work_venv) $ vi uwsgi.ini
# Wagtailプロジェクトのルートディレクトリ
chdir = /home/work_user/worksite

# wsgi.pyの場所
# (Wagtailのプロジェクト名を「worksite」にするとworksite/配下にwsgi.pyがあれば)
module = worksite.wsgi

# 仮想環境のディレクトリ
home = /home/work_user/work_venv

# あとはとりあえず雰囲気でいろいろなページのまねをして
master = true
processes = 2
threads = 1
chmod-socket = 666
vacuum = true
thunder-lock = true
max-requests = 6000
max-requests-delta = 300



3.uwsgi_params

uwsgi_param の設定をいろいろしている。

NGINXからのパラメータの連携の設定らしい。

NGINXがインストールされた先にファイルがあるので、それを利用する事にする。



4.静的ファイルの設定

WagtailやCodeRedCMSに含まれるcssや画像等のstatic なファイルや、アップロードした画像などをNGINXに直で処理させる為にまとめるコマンド。

(work_venv) $ python manage.py collectstatic


~/worksite/worksite/settings/base.py が

・・・・
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)
・・・・
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
・・・・

となっていれば、

~/worksite/static/ 
~/worksite/media/



にまとまるはず。

何もしていないので、mediaが無いからなのか、media のディレクトリは作成されていない。


5.uwsgiで起動

(work_venv) $ uwsgi --socket :8001 --ini /home/work_user/worksite/uwsgi.ini
[uWSGI] getting INI configuration from/home/work_user/worksite/uwsgi.ini
*** Starting uWSGI 2.0.19.1 (64bit) on [Fri Feb  4 05:14:35 2022] ***
・・・・
spawned uWSGI worker 1 (pid: 2328, cores: 1)
spawned uWSGI worker 2 (pid: 2329, cores: 1)


こんな感じで、標準出力を出力しながら、フォアグランドで起動する。

後は、NGINXと連携させて確認する。