自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【Django+AWS】独自ドメインを割り当てHTTPS通信を実現した状態で、EC2(Ubuntu+Nginx)へデプロイする

thumbnail

既に、【AWS】EC2にムームドメインで取得した独自ドメインを割り当て、HTTPS通信を行う【Route 53 + Certificate Manager + ロードバランサ(ELB)】の内容を終え、独自ドメインでHTTPS通信が可能な状態である前提で解説する。

一部、DjangoをAWSのEC2(Ubuntu)にデプロイすると内容が重複しているが、AWS側の設定は一切行わない。書き換えが必要なのは、settings.pyALLOWED_HOSTSとNginxの設定ファイル。それぞれ独自ドメイン実装済みの仕様に合わせる。

settings.py

ALLOWED_HOSTSには独自ドメインを入れる。例えば、独自ドメインがseiya0723.xyzだったら、

ALLOWED_HOSTS = [ "seiya0723.xyz" ]

これでOK。

Nginxの設定

Nginxの設定ファイル、/etc/nginx/sites-available/[アプリ名]server_nameにも独自ドメインを指定する。

server {
    listen 80;
    server_name seiya0723.xyz;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /var/www/django_fileupload;
    }
    location /media/ {
        root /var/www/django_fileupload;
    }
    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/Documents/django_fileupload/django_fileupload.socket;
    }

    client_max_body_size 100M;
}

server_nameにseiya0723.xyzを指定。ポート番号は80番のままで良い。ロードバランサとEC2の経路はHTTPであるから。

systemctl restart

以上の設定が完了したら、systemctlコマンドを使って、Nginx、gunicornをrestartさせる。

sudo systemctl restart nginx gunicorn

再起動され、設定が再読込されるまで1~2分ほどかかることもある。

動かない時

この設定で動かない時、AWSのセキュリティ設定に問題があると思われる。独自ドメインがきちんと割り当てられていないか、あるいはEC2インスタンスのセキュリティでロードバランサからの80番アクセスが許可されていないか等が考えられる。

結論

尚、BadRequest(400)が出るのは、このALLOWED_HOSTSNginxの設定のserver_nameが間違っているためである。

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ