runserverをするときに、0.0.0.0:8000という指定がされていたけど、これが何か分からない。という方も多いのではないかと思います。
そこで今回は、0.0.0.0:8000について分かりやすく説明をしていきます。
0.0.0.0:8000は、どのIPアドレスからのアクセスも受け付けます、という意味です
上で書いた通り、0.0.0.0:8000は、どのIPアドレスからのアクセスも受け付けますよ、という意味です。
ただ、どのIPアドレスからのアクセスも受ける。という部分が分からない、という方も多いかもしれません。
ですので、すこし掘り下げてみていきましょう。
djangoでは、サーバーは2つ準備する必要がある
ここが最大のポイントです。djangoでは、サーバーを2つ準備しなければいけません。
その2つとは、ウェブサーバーとアプリケーションサーバーです。
djangoの開発環境で「runserver」コマンドを打つと、実は2つのサーバーが立ち上がっているのです。
アクセスの流れは、ウェブサーバー→アプリケーションサーバー
そして、ブラウザからのアクセスの流れは、ウェブサーバーからアプリケーションサーバーという形になります。
以下が、djangoでのアクセスの流れです。
0.0.0.0:8000は、アプリケーションサーバーが受けるIPを示している
少しずつ具体的な内容に入っていきましょう。
runserverをする時に指定した0.0.0.0:8000、実はこれはアプリケーションサーバーがアクセスを受けるIPを指定しているのです。
この点を意識した上で、良く起こりがちなエラーについてみていきましょう。
ウェブサーバーにどのIPでもアクセスできるわけではない
これが2つ目のポイントです。0.0.0.0:8000としているので、どのIPを入力してもアクセスできると考える方も多いと思います。
(私も最初はそのように考えていました。)
しかし、ウェブサーバーはそれぞれ一つのIPアドレスを有していることが一般的です。
ですので、runserverで0.0.0.0:8000と指定したとしても、ブラウザからはウェブサーバーのIPを指定してあげなければいけないのです。
このポイントが分かると、0.0.0.0:8000でサーバーを立ち上げたにも関わらず、エラーが出てしまうということを避けることができるでしょう。
:8000はポートの番号
ちなみに、0.0.0.0の後についている8000はポートの番号です。
0.0.0.0:8000のまとめ
(1) djangoでは、2つのサーバーが使われている。
(2) 0.0.0.0:8000は、アプリケーションサーバーが、8000番ポートのどのIPアドレスからもアクセスを受ける。ということを指定している。
(3) ブラウザからウェブサーバーにアクセスするためには、ウェブサーバーのIPを入力する必要がある。