Djangoセットアップ直後に外部機器から接続できない場合の対応
概要
Djangoセットアップ直後に外部PCから接続できない場合の対応メモ。
※サーバー内からはアクセスできるにも関わらず。
数年ぶりの環境セットアップで再度ハマったので備忘メモ。
症状について
環境セットアップ直後において、サーバー外のPC等でブラウザーを立ち上げてDjangoのサーバーに接続した場合に"ERR CONNECTION REFUSED"等になる場合がある。
対応方法
settings.py を書き換える。
プロジェクトフォルダ内のsettings.pyを下記のように書き換えてサーバー名指定のアクセスを許可する。
ALLOWED_HOSTS = []
↓
ALLOWED_HOSTS = ['server名']起動コマンドに設定を追加する。
サーバー起動コマンドに全てのネットワーク・インターフェースを使用可能にする設定を追加する。
python3 manage.py runserver
↓
python3 manage.py runserver 0.0.0.0:8000
補足説明
この事象はブラウザでの動作確認をサーバー上でlocalhostへアクセスするように説明している資料が多くあることによる。この場合は上記設定をしないでもアクセスできてしまう。
そのため、例えばDjangoはLinuxサーバーで動作させブラウザはWindowsPCの場合で作業を行う場合にこの事象でハマる。
初期段階で躓くのは避けたいので特に入門的な説明ではこの設定を明記してほしい。
ALLOWED_HOSTSについて追記
上記例ではServer名を指定しているが、IPアドレス(192.168.1.2等)の設定でもよいし、それらを複数指定(ALLOWED_HOSTS = ['server名',’192.168.1.2’]')してもよい。
テスト環境用にALL OK(ALLOWED_HOSTS = ['*'])も可能であるがセキュリティの問題があるのでなるべく避けること。
runserverについて追記
上記設定がない場合は下記と同等である。
python3 manage.py runserver 127.0.0.1:8000
つまりサーバー内のループバックであるlocalhost(127.0.0.1)での接続のみ可能となってしまう。
なお、8000はポート番号である。