前提
最終的にhttp://example.com/django-site からアプリ閲覧ができるようにします。
以下の構成のDjangoアプリをApacheで動かします。
/var/www/django/ ├── django-app │ ├── admin.py │ ├── apps.py │ ├── __init__.py │ ... ├── manage.py ├── static │ ├── admin │ ├── css │ ├── fonts │ └── js └── django ├── __init__.py ├── __pycache__ ├── settings.py ├── urls.py └── wsgi.py
構築手順
DjangoをApacheを使って動かすにはmod_sslが必要なのでインストールします。
$ yum install mod24_wsgi-python35 # Apache2.4, python3.5を使用している場合
次に、/etc/httpd/conf.d/virtual.confでApache側の設定を以下のようにします。
Alias /static/ /var/www/django/static/ <Directory /var/www/django/static> Require all granted </Directory> # IPはServerNameと同じ値 WSGIScriptAlias /django-site /var/www/django/django/wsgi.py process-group=example.com WSGIDaemonProcess example.com python-home=/usr python-path=/var/www/django WSGIProcessGroup example.com <Directory /var/www/django/django> <Files wsgi.py> Require all granted </Files> </Directory>
WSGIDaemonProcessのpython-homeは使用するPythonのprefixを指定します。以下のように確認することができます。
import sysconfig sysconfig.get_config_vars('CONFIG_ARGS') # 出力のうち--prefixの項目
また、Apacheで導入する際には静的ファイルの設定を別途行う必要があるため注意が必要です。
Django付属のWebサーバでは静的ファイル群を自動的に読み込んでくれますが、本番用にApacheなどを導入する際は別途設定する必要があります。
Django での static files の扱い方まとめ
/var/www/django/django/settings.pyのDEBUG
の項目をFalseに変更
DEBUG = True ↓ DEBUG = False
また、最後の行に以下を追加します。
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
その後、以下のコマンドを実行すると、/var/www/django配下に静的ファイルディレクトリが設定されます。
$ python manage.py collectstatic
Apacheを再起動し、http://example.com/django-site から接続が確認できれば完了