Django 入門編: mod_wsgiを用いてDjangoとApacheの連携

Apacheのインストール

yum install httpd httpd-devel

yumコマンドでインストールできます。

rpm -qa | grep httpd

確認はrpmコマンドで行います。表示されれば正常にインストールできています。

mod-wsgiのインストール

pip3 install mod-wsgi

pipコマンドでインストールできます。

pip3 list

確認はpipコマンドで行います。表示されれば正常にインストールできています。

mod-wsgiをインストールすると下記のファイルが作成されます。

/usr/local/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.soのファイルをApacheのmodule配下へコピーします。

cp -p /usr/local/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so /etc/httpd/modules/mod_wsgi.so

これでApacheで読み込むことができるようになります。

Apacheの設定

Apacheの設定を行っていきます。
今回は、VirtualHostで行っていきたいと思います。

LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix run/wsgi
<VirtualHost django-test.com:80>
 ServerName django-test.com
 WSGIDaemonProcess django-test.com python-path=/home/django_project
 WSGIProcessGroup django-test.com
 WSGIScriptAlias / /home/django_project/django_project/wsgi.py
 <Directory "/home/django_project/">
  AllowOverride All 
  Require all granted
 </Directory>
</VirtualHost>

上記の内容で/etc/httpd/conf.d/django_test.confを作成します。
django-test.comは取得したドメイン名に置き換えてください。
django_projectは作成したプロジェクト名に置き換えてください。

apachectl configtest

apachectlコマンドで設定のエラー等の確認ができます。

Djangoの設定

現状の状態だと、DjangoのALLOWED_HOSTSの設定でエラーになってしまいます。
/home/django_project/django_project/settings.pyの設定を変更します。

変更前

ALLOWED_HOSTS = []

変更後

ALLOWED_HOSTS = ['django-test.com']

これですべての設定は完了です。

systemctl start httpd

systemctlコマンドでApacheを起動します。

systemctl enable httpd

systemctlコマンドでApacheの自動起動をオンにします。