DjangoにおけるWSGI設定について


この記事を書くに至った経緯

以前どっかのサイトを参考にしながら
Djangoの設定をしたのですが
設定ミスってLet'sEncryptが自動更新しなくなったので
(ApacheのドキュメントルートをDjangoのドキュメントルートにしたというやらかし)
復旧させるために(Forbidden喰らいまくった)試行錯誤してたら
すごく苦労してしまったので備忘録として書こうと思いました。

使用環境

CentOS 7.5
Apache 2.4
Python 3.6.5
Django 2.1.2

前提として

pipでmod_wsgiを導入しているので
/etc/httpd/conf.module.d/に自動生成されたconfファイルを使っています。
導入方法などはほかの記事などでも見つかると思いますので割愛します。

自分は/home直下に置いているので
その辺は読み替えていただければと思います。

設定ファイルと各項目について

[wsgi_module].conf
# NOTE:
# Only one mod_wsgi can be loaded at a time.
# Don't attempt to load if already loaded.
<IfModule !wsgi_module>
        LoadModule wsgi_module modules/[wsgi_module].so #自動生成で入っていると思います。
        WSGIScriptAlias /mysite /home/mysite/mysite/wsgi.py
        WSGIPythonPath /home/mysite
        Alias /static /home/mysite/static
        <Directory /home/mysite/mysite>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>
        <Directory /home/mysite/static>
                Require all granted
        </Directory>
</IfModule>

LoadModuleは最初から生成されたままで修正なしです。
LoadModule以下は追記(もしくは変更)します。

まずWSGIScriptAliasは
第一引数(?)に実際アクセスするディレクトリ名を
第二引数にWSGIの設定があるファイル(Djangoならmysite/mysite/wsgi.py)
を指定します。

次にWSGIPythonPathは
Djangoでいうプロジェクトの場所を指定します。

Aliasですがstaticディレクトリでアクセスする場所を指定します。

Directoryディレクティブですが
wsgi.pyがある場所を参照できるようにする
staticディレクトリがある場所を参照できるようにする
って感じです。

最後にすべてに共通することですが
ディレクトリの最後のスラッシュは入れないようにします。
(自分の勘違いかもしれませんが動いたのでこういう指定なのだと思ってます)

最後に

これでやっと公開できました(別原因で正確にはまだ奮闘した)
すっごい初心者なのでもし何か間違ってたら
もしくは補足等ありましたらコメントいただけると幸いです。