webサーバの後ろでwagtailを動かすまで

2023/12 の作業


uwsgi、supervisor のインストールと設定、nginx と連携する設定とログローテまで。



uwsgi を設定


uwsgi インストール

昔インストールしたの(uwsgiの初期設定uwsgiのもうちょっと設定)を参考に設定。

# gcc が必要と言われるので
$ sudo dnf install gcc.aarch64

# Python.h が必要と言われるので
$ sudo dnf install python3.11-devel.aarch64

# インストール
$ sudo -i -u workusr
$ source workusr_venv/bin/activate 
$ pip install uwsgi

# media は S3、static はここだから、 nginx 用に static を集める
# ※ 集めた static を nginx ユーザから見えるパーミッションにするように
$ python manage.py collectstatic --settings worksite.settings.prod

# 今までのサイトの設定ファイル持ってきて試し起動
$ uwsgi --socket :8001 --ini uwsgi.ini


nginx の設定

# 今までのサイトの設定ファイルを持ってきて sites-available に入れて、リンク
$ cd /etc/nginx/sites-enabled
$ sudo ln -s ../sites-available/work.conf .

# nginx 再起動
$ sudo systemctl restart nginx.service


画面が出ればOK


supervisor を設定


supervisor インストール

昔インストールしたのを参考に設定。

# supervisor 用の venv を作って
$ sudo python3.11 -m venv /opt/supervisor/

# pip を upgrade
$ sudo /opt/supervisor/bin/pip install --upgrade pip

# パッケージをインストール
$ sudo /opt/supervisor/bin/pip install supervisor

# /etc/sudoers の secure_path が /usr/local/bin に通っているので、リンク
$ sudo ln -s /opt/supervisor/bin/supervisorctl /usr/local/bin/.
$ sudo ln -s /opt/supervisor/bin/supervisord /usr/local/bin/.

# 設定ファイルの作成
$ sudo mkdir /etc/supervisor
$ sudo sh -c "/opt/supervisor/bin/python /opt/supervisor/bin/echo_supervisord_conf > /etc/supervisor/supervisord.conf"

# 設定を昔と同じようにする(ログ出力等)
$ sudo vi /etc/supervisor/supervisord.conf

# アプリ毎の設定ファイル
# ディレクトリを作成し、今までのサイトの supervisor 用の設定ファイル(worksite.ini)を持ってきて入れる
$ sudo mkdir /etc/supervisor/supervisord.d

# supervisor のログ出力先ディレクトリの作成
$ sudo mkdir /var/log/supervisor


supervisor の 自動起動を設定

# 今までのサイトの systemd の設定ファイルを持ってきて入れて調整
$ sudo vi /etc/systemd/system/supervisord.service

# サービス登録して
$ sudo systemctl enable supervisord

# 起動
$ sudo systemctl start supervisord

nginx 経由で watail の画面が見えていればOK


logrotate を設定

nginx はインストール時に入ってるものをベースに使う。

wsgi、supervisor 共にログローテしない様に設定にしていて、ローテは logrotate に任せる。

supervisor は入ってないので、今までのサイトで使ってたのを持ってきて入れて調整。

supervisor 用 を nginx をベースに作成する時は、

SIGUSR2 indicating log reopen request

との事なのでそこら辺に気を付ける。

# nginx のログローテ動作確認(強制ローテ)
$ sudo logrotate -f /etc/logrotate.d/nginx

# supervisor のログローテ動作確認(強制ローテ)
$ sudo logrotate -f /etc/logrotate.d/supervisor


これで、移行は一通りおしまい。