• 0.0.0.0:8000でrunserverするのはどういうこと?【詳しく解説】

    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でのアクセスの流れです。

    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を入力する必要がある。

    ~Django無料講義~のご案内

    Code for Djangoが、4時間超の無料Django講義をはじめました

    •  ・本を出版したCode for Djangoの
       製作者が作ったサイトです。
    •  ・Code for Djangoの内容も、
       動画で詳しく解説しています。
    •  ・動画は順次ふやしていきますので、
       ただで学び続けることが可能です。
    •  ・Djangoの効率的なスキルアップに、
       是非お役立て下さい。