環境ごとに設定ファイル(settings)を変える
ローカル環境、開発サーバー、本番サーバーで設定を切り替える為の変更。
基本的に以下ページの通り。
Djangoプロジェクト構造のカスタマイズ(分割と構造化)
configディレクトリのリネーム
- settings.pyが含まれるフォルダの名前を変更する
- manage.pyの中の
os.environ.setdefault
を変更する
settingsの分割
- settings.pyから共通部分を抜き出してbase.pyとする
- 共通ではない部分をdevelopment.pyやproduction.pyとする
- development.pyやproduction.pyに
from .base import *
を記述し、共通部分を読み込むようにする - manage.pyの中の
os.environ.setdefault
を変更する
Djangoサーバー起動時の設定ファイル指定方法
--settings
で切り替える。
python manage.py runserver 0.0.0.0:8000 --settings=config.settings.production
AWSで動かす場合の注意点
起動時は --daemon をつける
--daemon
をつけないとEC2インスタンスにアクセスしているterminal(teratermなど)のプロセスを落とした瞬間にサーバー側のプロセスも落ちてしまう。
gunicorn config.wsgi --bind=0.0.0.0:8000 --env DJANGO_SETTINGS_MODULE=config.settings.development --daemon
wsgiファイルにもmysqlライブラリをimportすべし
wsgiファイルにもmysqlライブラリ(pymysqlなど)をimportしておかないと、gunicornから起動する際にmysqlに接続できずにエラーになる。
import os
import pymysql
pymysql.install_as_MySQLdb()
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development')
application = get_wsgi_application()
staticディレクトリを参照する際の注意
nginxの設定変更
/etc/nginx/nginx.conf
にstaticの参照設定の追記が必要。
パスを書き込む際 (app name) までの指定でよく、(app name)/static
までは不要。
location /static/ {
root /home/ec2-user/(app name);
}
設定変更後は nginx の再起動が必要。
sudo nginx -s reload