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と連携させて確認する。