webサーバの後ろでwagtailを動かすまで
- 2024年1月12日
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
これで、移行は一通りおしまい。