Upgrade to Pro — share decks privately, control downloads, hide ads and more …

全⽇本ビルドインサーバ 本番環境利⽤禁⽌協会〜〜 (Flaskフレームワークの場合)

Avatar for Tatsunobu. Tatsunobu.
November 16, 2024
32

全⽇本ビルドインサーバ 本番環境利⽤禁⽌協会〜〜 (Flaskフレームワークの場合)

Avatar for Tatsunobu.

Tatsunobu.

November 16, 2024

Transcript

  1. 全 日 本 ビ ル ド イ ン サ ー

    バ 本 番 環 境 利 用 禁 止 協 会 ~ ~ ~ ( F l a s k フ レ ー ム ワ ー ク の 場 合 )
  2. た つ の ぶ T a t s u n

    o b u about 〇1996年生まれ 〇屋号「ゴロゴロシステムズ」代表 〇ソフトウェアエンジにゃー 😸 〇社会人学生(心理学) プ ロ フ ィ ー ル
  3. 目 次 ビ ル ド イ ン サ ー バ

    と は ? 01 ビ ル ド イ ン サ ー バ の メ リ ッ ト ・ デ メ リ ッ ト 02 W S G I サ ー バ ・ プ ロ キ シ サ ー バ の ス ス メ 03 本 番 環 境 へ の f l a s k 構 築 例 04 ま と め 05 全日本ビルドインサーバ 本番環境利用禁止協会
  4. 01 ビ ル ド イ ン サ ー バ と

    は ? ①FlaskなどWEBアプリケーションの開発中 に使う簡易的なウェブサーバ。 ②通常フレームワークをインストールした ときに、開発者がすぐにアプリケーション を実行できるように内蔵されている。 ③flaskだとflask run コマンドで簡単にサ ーバを立ち上げることが可能。 ④flaskだとデバッグモードが有効になって いるため、開発中のエラーの詳細が コンソールに表示される!
  5. 02 ビ ル ド イ ン サ ー バ の

    メ リ ッ ト ・ デ メ リ ッ ト 立ち上げが容易 デバッグメッセージ コマンド一発 メリット パフォーマンスが低い  ×大量リクエストの効率処理 スケーラビリティの欠如  ×負荷分散対応 長期実行での低信頼性   開発向きのため長時間利用時に   メモリリーク・異常終了の可能性↑ ロードバランシング不可 デメリット
  6. 〇Web Server Gateway Interface 〇ウェブアプリケーション(FlaskやDjangoなど)とウェブサーバ(Nginx/Apache) との間でリクエストをやり取りするためのインターフェース EX)Gunicorn・uWSGI・Waitress etc... W S G

    I サ ー バ プロキシサーバは、クライアントとサーバの間に立ち、リクエストを中継するサーバ リバースプロキシサーバは、クライアントから受け取ったリクエストをバックエンド のサーバ(WSGIサーバなど)に転送するサーバ EX) Nginx・Apache etc... プ ロ キ シ サ ー バ 04 W S G I サ ー バ ・ プ ロ キ シ サ ー バ の ス ス メ
  7. 03 # プロジェクトディレクトリを作成 mkdir flask_project cd flask_project # 仮想環境を作成 python3

    -m venv venv # 仮想環境を有効化 source venv/bin/activate # macOS/Linux # Flaskをインストール pip install Flask # Flaskアプリケーションの作成 app.py # Gunicorn(WSGIサーバ)インストール pip install gunicorn # Nginxのインストール ## Ubuntu/Debianの場合 sudo apt update sudo apt install nginx ## CentOSの場合 sudo yum install nginx ## macOSの場合(Homebrewを使用) brew install nginx # nginxリバースプロキシ設定ファイルを編集 sudo vi /etc/nginx/sites-available/flask_project # 設定ファイルを有効化(シンボリックリンク作成) sudo ln -s /etc/nginx/sites-available/flask_project /etc/nginx/sites-enabled/ # 設定ファイルにエラーがないかテスト sudo nginx -t # Nginxを再起動 sudo systemctl restart nginx # Gunicornを起動(8000番ポートで実行) gunicorn -w 4 -b 127.0.0.1:8000 app:app #ブラウザで確認 http://<ローカルIP> ※Hello, World!と表示されればOK! ※Gunicornをプロセス管理ツール(例えばsystemd)でサービスとして登録し、 再起動しても自動的に起動するように設定するとなおよし 👍 本 番 環 境 へ の f l a s k 構 築 例
  8. お ま け 同期(WSGI)と非同期(ASGI) WSGI 主にHTTPリクエスト に対応。リクエストと レスポンスが同期的に やり取り ASGI

    HTTPだけでなく WebSocketや他の プロトコルもサポート。 リアルタイム通信などの 非同期処理が可能 EX) Gunicorn EX) Uvicorn