概要
自宅サーバのUbuntu22.04にインストールしたDjango3.2.15でrunserverしましたが、作業用PCのブラウザですんなりアクセスできなかったので、アクセスできないときに確認するサーバ側の設定をまとめました。nginxなどWebサーバは使用しておらず、Djangoデフォルトの開発用のWebサーバを使用しています。
環境
Ubuntu22.04 IP 192.168.88.15/24
Django 8000番ポート
作業用PC 192.168.88.1/24
ufwを確認
8000番ポートが開いているか確認します。
$ sudo ufw status
Status: active
To Action From
-- ------ ----
55055 LIMIT Anywhere
55055 (v6) LIMIT Anywhere (v6)
私の環境では55055番ポート以外、アクセスできない設定になっていたので、8000番ポートを開けます。
$ sudo ufw allow 8000
Rule added
Rule added (v6)
$ sudo ufw status
Status: active
To Action From
-- ------ ----
55055 LIMIT Anywhere
8000 ALLOW Anywhere
55055 (v6) LIMIT Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
ufwを設定(sudo ufw enable)していない場合は、全ポート開いているので確認・ポートを開ける必要はありません。
setting.pyを確認
WebサーバのIPまたはホスト名をリストで入力します。クライアントから送られたHTTPリクエストのホストヘッダーに、ALLOWED_HOSTSで指定したものがあればレスポンスを返します。
ALLOWED_HOSTS = ['192.168.88.15']
runserverコマンドの実行
DjangoへのアクセスをUbuntu22.04のすべてのネットワークインターフェース(私の環境だと192.168.88.15と127.0.0.1)で待ち受けるようにしてrunserverします。(runserverのコマンドをそのまま実行すると、Djangoは127.0.0.1:8000でアクセスを待ち受けます。)
$ python manage.py runserver 0.0.0.0:8000
UbuntuのIPアドレスでも大丈夫でした。192.168.88.15:8000でアクセスを待ち受けます。
$ python manage.py runserver 192.168.88.15:8000