user ディレクトリに pyenv をインストールし、Django アプリケーションの mysite を作った場合の設定です。
.so ファイルの場所を探します。.so ファイルとは 「 shared object 」の略で、共有ライブラリのファイルの一つです。
find /home/user/.pyenv -name *-linux-gnu.so
ファイルのパスがわかれば、Apache の modules ディレクトリにコピーします。
sudo cp -p /home/user/.pyenv/versions/3.11.9/lib/python3.11/site-packages/mod_wsgi/server/mod_wsgi-py311.cpython-311-x86_64-linux-gnu.so /etc/httpd/modules
Apache の追加の設定については、「 django.conf 」というファイルを作成し、そのファイルに設定をします。
「 /home/httpd/conf.d 」ディレクトリに移動し、「 django.conf 」ファイルを開きます。
cd /home/httpd/conf.d
sudo vi django.conf
django.conf ファイルの設定内容は以下です。
/home/httpd/conf.d/django.conf
LoadModule wsgi_module modules/mod_wsgi-py311.cpython-311-x86_64-linux-gnu.so
WSGIScriptAlias / /home/user/mysite/mysite/wsgi.py
WSGIDaemonProcess wsgi_app python-home=/home/user/.pyenv python-path=/home/user/mysite/mysite
WSGIPythonHome /home/user/.pyenv/versions/3.11.9
WSGIPythonPath /home/user/mysite
<Directory /home/user/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /home/user/mysite/mysite/static/
<Directory /home/user/mysite/mysite/static>
Require all granted
</Directory>
WSGIScriptAlias は、Apache に来たリクエストをどこにつなぐかを指定します。ここでは 「 /(ルート)」に来たリクエストを Django でつくったプロジェクトに飛ばしています。
WSGIDaemonProcess は、Linux ではデーモン(=サービス)として動かすのが推奨されています。
WSGIPythonHome は、mod_wsgi に使わせたい Python のパスを記述します。ディレクトリを指定します。
WSGIPythonPath は、プロジェクトのパスを指定します。
設定変更後、シンタックスエラーがないか確認し、Apache を再起動します。
sudo apachectl configtest
sudo systemctl restart httpd