はじめに
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
は 開発用の簡易サーバー であり、本番環境での使用は推奨されていません。
本番環境では gunicorn
や uWSGI
などの WSGIサーバー を使用し、Nginx
や Apache
と組み合わせて運用します。
Django の runserver
は 開発用の簡易サーバー であり、本番環境での使用は推奨されていません。
本番環境では gunicorn
や uWSGI
などの WSGIサーバー を使用し、Nginx
や Apache
と組み合わせて運用します。
-
runserver(開発環境)の特徴
- シンプルで設定不要
- コードの変更を即時反映(ホットリロード)
- デバッグツール(
DEBUG = True
)が有効 - パフォーマンスが低い(シングルスレッド / シングルプロセス)
- セキュリティが弱い(本番環境向けの対策なし)
-
本番環境(gunicorn や uWSGI)の特徴
- 複数プロセス・スレッド対応で高パフォーマンス
-
Nginx
やApache
と組み合わせて負荷分散が可能 - セキュリティ対策(リバースプロキシ、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
は 開発用の簡易サーバー であり、本番環境での使用は推奨されない。 - 本番環境では
gunicorn
やuWSGI
を使用し、Nginx
やApache
などと組み合わせるのが一般的。 - WSGI サーバーを利用することで、パフォーマンス向上・セキュリティ強化が可能。
- 開発と本番環境の違いを理解し、適切な構成を選択することが重要。
Django アプリを 安全かつ効率的に運用 するために、開発と本番環境の違いを意識したサーバーの使い分け を実践しましょう。