1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的な備忘録:本番環境で runserver を使いそうになり、一度立ち止まって開発環境との使い分けを整理してみた

Posted at

はじめに

Django を開発する際に、手軽にアプリケーションを動作確認できる runserver コマンドは非常に便利です。

しかし、これはあくまで 開発用の簡易サーバー であり、本番環境での運用には適していません。

本記事では、runserver の使い方と、本番環境で推奨される WSGI サーバー(Gunicorn など) との違いについて解説します。

書こうと思ったきっかけ

Django で開発を始めたばかりの頃、runserver をそのまま本番環境でも使おうとしてしまったことがありました。

しかし、パフォーマンスが低く、外部アクセスに対するセキュリティも脆弱 で、実際の運用には適さないことを知りました。

この経験から、開発環境と本番環境で適切なサーバーを使い分けることの重要性 を学び、改めて整理しておきたいと思いました。

Django の runserver コマンドと本番・開発での使い分け

1. Django の runserver コマンドとは?

Django には 開発用の軽量な Web サーバー が組み込まれており、runserver コマンドを実行するだけでローカル環境でアプリケーションを起動できます。

基本的な使い方

python manage.py runserver

デフォルトでは、http://127.0.0.1:8000/ でサーバーが起動します。

ポートを変更する

python manage.py runserver 8080

これにより、http://127.0.0.1:8080/ で起動できます。

IP アドレスを指定する

python manage.py runserver 0.0.0.0:8000

これを指定すると、外部のデバイス(同じネットワーク内の PC やスマートフォン)からもアクセスできます。

2. 開発環境 (runserver) と本番環境 (gunicorn など) の違い

Django の runserver開発用の簡易サーバー であり、本番環境での使用は推奨されていません。

本番環境では gunicornuWSGI などの WSGIサーバー を使用し、NginxApache と組み合わせて運用します。

Django の runserver は 開発用の簡易サーバー であり、本番環境での使用は推奨されていません。

本番環境では gunicornuWSGI などの WSGIサーバー を使用し、NginxApache と組み合わせて運用します。

  • runserver(開発環境)の特徴

    • シンプルで設定不要
    • コードの変更を即時反映(ホットリロード)
    • デバッグツール(DEBUG = True)が有効
    • パフォーマンスが低い(シングルスレッド / シングルプロセス)
    • セキュリティが弱い(本番環境向けの対策なし)
  • 本番環境(gunicorn や uWSGI)の特徴

    • 複数プロセス・スレッド対応で高パフォーマンス
    • NginxApache と組み合わせて負荷分散が可能
    • セキュリティ対策(リバースプロキシ、HTTPS対応)
    • 設定やデプロイの手順が runserver よりも複雑

3. 本番環境での Django サーバーの構成

本番環境では、WSGI サーバー + リバースプロキシ の構成を取ります。

一般的な構成

クライアント(ユーザーのブラウザ)
        ↓
Nginx(リバースプロキシ、静的ファイル配信)
        ↓
Gunicorn / uWSGI(WSGIアプリケーションサーバー)
        ↓
Django アプリ(ビジネスロジック)
        ↓
PostgreSQL / MySQL(データベース)

Gunicorn を使った Django の起動

本番環境では gunicorn を使うのが一般的です。

Gunicorn のインストール

pip install gunicorn

Django アプリを Gunicorn で起動

gunicorn myproject.wsgi:application --bind 0.0.0.0:8000

プロセスを複数並列実行する

gunicorn myproject.wsgi:application --workers 3 --bind 0.0.0.0:8000

→ これで 3 つのプロセスが並列にリクエストを処理できます。

まとめ

  • runserver開発用の簡易サーバー であり、本番環境での使用は推奨されない。
  • 本番環境では gunicornuWSGI を使用し、NginxApache などと組み合わせるのが一般的。
  • WSGI サーバーを利用することで、パフォーマンス向上・セキュリティ強化が可能。
  • 開発と本番環境の違いを理解し、適切な構成を選択することが重要。

Django アプリを 安全かつ効率的に運用 するために、開発と本番環境の違いを意識したサーバーの使い分け を実践しましょう。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?