笑うPython男のアイコン

トップ > Webアプリ開発 > Webサーバーの選び方

Webサーバーの選び方|内蔵サーバーと本番用の違い

「Webサーバーって何をするもの?」「開発のときに使ったサーバーをそのまま公開していいの?」に答える1ページです。内蔵サーバー、Waitress、Gunicorn、Uvicorn、nginxの役割分担を整理します。

笑うPython男

笑うPython男

サーバー選びは地味だけど大事な話。開発用の簡易サーバーを本番に使うのは、仮設トイレで店を開くようなものだよ。本気でやるなら、最初からちゃんとした店構えにしな。

Webサーバーの仕事とは

Webサーバーは、ブラウザからのリクエストを受け取り、アプリに渡して、返ってきたレスポンスをブラウザへ届ける「受付係」です。PythonのWebアプリでは、この受付係とアプリ本体は別々の部品になっています。

この分業のおかげで、開発中と本番で受付係だけを取り替えることができます。

開発用:内蔵サーバーで十分

Flaskの app.run() や、FastAPI開発で使う簡易起動は、学習と動作確認のための内蔵サーバーです。自分のパソコンで試す分にはこれで十分。ただし、同時アクセスや安全性を想定していないので、そのままインターネットに公開するのは非推奨です。画面にも「開発用サーバーだから本番で使うな」という趣旨の警告が出ます。

本番用:代表的な受付係たち

名前対応特徴
WaitressWSGI(Flask、Django)Windowsでも動く純Python製。迷ったらこれ
GunicornWSGI(Flask、Django)Linux環境の定番。Windowsでは使えない
UvicornASGI(FastAPI)非同期対応のFastAPIで標準的な選択肢
nginxリバースプロキシ表の門番。静的ファイル配信やHTTPSを担当し、後ろのアプリサーバーへ中継する

よくある本番構成は「nginx(門番)+ GunicornやWaitress(受付)+ アプリ」という三段構えです。ただし小規模な公開なら、アプリサーバー単体でも運用できます。

選び方:迷ったらこの順でOK

  1. 学習・自分のPC内だけ → 内蔵サーバー
  2. Windowsで本番っぽく動かしたい → Waitress
  3. LinuxサーバーにFlask/Djangoを公開 → Gunicorn(+必要に応じてnginx)
  4. FastAPIを公開 → Uvicorn(+必要に応じてnginx)
  5. Render等の公開サービスを使う → サーバーの面倒はサービス側が肩代わりしてくれることが多い(設定画面の案内に従う)
笑うPython男

笑うPython男

最初は内蔵サーバーで何も困らないんだ。それで物足りなくなったときが、乗り換えどき。順番を飛ばして最初から三段構えにすると、どこで詰まったか分からなくなるよ。

注意:公開サービスの無料枠では、使えるサーバーの種類や起動方法が決められている場合があります。設定前に各サービスの公式ドキュメントで確認してください。無料枠の条件は変わりやすいものです。

関連ページ:フレームワークとは(Flask・FastAPI・Djangoの選び方)

アプリ側の「型」を選ぶ話はこちら。サーバーとセットで理解すると全体像がつながります。

Webアプリ開発の記事へ