ゼファーネットのロゴ

Gunicorn および Nginx を備えた AWS 上の Flask を使用した機械学習モデルのデプロイ

日付:

概要

前回の記事では、Flask アプリケーションにカプセル化された感情分析用の機械学習モデルを構築するプロセスについて説明しました。この Flask アプリケーションは感情分析を使用して、ツイートをポジティブまたはネガティブに分類します。実装の準備が整った完全なプロジェクトは GitHub でバージョン管理されています。さらに進んで、Gunicorn と Nginx を使用してこの Flask アプリケーションをクラウド サーバーにデプロイし、機械学習モデルがスケーラブルで実稼働環境でアクセスできるようにする方法について説明します。

前回の記事からご覧いただけます Flask を使用して機械学習モデルをデプロイするにはどうすればよいですか?

中断したところから再開し、Gunicorn と NGINX を使用して、この Flask アプリケーションをクラウド サーバーにデプロイします。この投稿では、もともと機械学習のデプロイメントのためにローカルでホストされていた Flask アプリケーションをクラウドに移行する方法について説明します。

Gunicorn と Nginx を備えた AWS 上の Flask を使用した機械学習モデルのデプロイ

目次

手順には次のものが含まれます

  • AWS EC2 インスタンスをセットアップします。 Ubuntu をオペレーティング システムとして使用して AWS EC2 インスタンスを起動します。受信トラフィックを許可するようにセキュリティ グループを構成します。
  • EC2 インスタンスに SSH で接続します。 SSH を使用して、ローカル macWeis から EC2 インスタンスに接続します。ローカル システムに接続するには、SSH キー ペア (パブリックおよびプライベート) が必要です。
  • Flask アプリケーションをデプロイします。 Flask アプリケーション ファイルを EC2 インスタンスに転送します。モデルがすでに Git Hub 上にある場合は、EC2 Ubuntu インスタンスにクローンを作成します。次に、仮想環境をセットアップし、pip を使用して必要な Python パッケージまたは要件ファイルをディレクトリにインストールします。 Flask アプリケーションが EC2 環境で正しく動作するかどうかをテストします。
  • 依存関係をインストールします。 アップグレード用のパッケージ リストを更新し、Python、pip、および Flask アプリケーションに必要なその他のライブラリなどの必要な依存関係をインストールします。
  • Gunicorn をインストールして構成します。 Python アプリケーション用の WSGI HTTP サーバーである Gunicorn をインストールします。 Gunicorn サービス ファイルを作成して、アプリケーション プロセスを管理します。 Gunicorn サービスを開始し、バックグラウンドで実行できるようにします。
  • NGINX をインストールして構成します。 高性能 Web サーバーである NGINX とリバース プロキシをインストールします。受信した HTTP リクエストを Gunicorn サーバーに転送するように NGINX を構成します。 Flask アプリケーションのサーバー ブロック (仮想ホスト) をセットアップします。
  • ドメイン名の構成 (オプション): ドメイン名がある場合は、EC2 インスタンスのパブリック IP アドレスを指すように DNS 設定を構成します。そうでない場合は、パブリック IP アドレスから直接 Flask アプリケーションにアクセスできます。
  • アプリケーションを保護します。 クライアントとサーバー間の安全な通信のために HTTPS を有効にします。 SSL/TLS 証明書 (Let's Encrypt など) を取得し、それを使用するように NGINX を構成します。
  • 展開をテストします。 すべてのセットアップが完了したら、Web ブラウザーを介してアクセスするか、cURL または Postman を使用してリクエストを送信して、デプロイされた Flask アプリケーションをテストします。

これらの手順に従って、Gunicorn を WSGI サーバーとして、NGINX をリバース プロキシ サーバーとして利用して、受信リクエストを効率的かつ安全に処理することで、機械学習用の Flask アプリケーションを AWS EC2 インスタンスに正常にデプロイします。

実践に入る前に、それがどのように行われるかを理解しましょう。

通信を理解する: Flask、Gunicorn、Nginx

             +-----------------------------+
             |           Client            |
             +-----------------------------+
                          |
                          |
             +------------v-------------+
             |        NGINX (Port 80)   |
             +------------+-------------+
                          |
                          |
             +------------v-------------+
             |       Gunicorn           |
             |     (WSGI Server)        |
             +------------+-------------+
                          |
                          |
             +------------v-------------+
             |   Flask Application      |
             |       (Python)           |
             +--------------------------+

Flask: アプリケーションの中心

Flask は、Web アプリケーション/サービスを構築するためのツールを提供する軽量で柔軟な Python Web フレームワークです。これは感情分析サービスの基盤であり、受信した Web リクエストを処理し、機械学習モデルを使用して処理し、分析結果を返します。 Flask はスタック内のアプリケーション層として動作します。

Flask アプリケーションは前の記事ですでに作成しました。そして、コマンドを使用してクローンを作成します。

https://github.com/Geek-shikha/Flask_model_sentiment_analysis.git

Flask だけでは一度に複数のリクエストを処理できません。そこでガニコーンの出番です。

Gunicorn: Python WSGI HTTP サーバー

Gunicorn は、Flask と接続する中間層として機能します。これは、UNIX システム用に設計された Python WSGI HTTP サーバーであり、Python Web アプリケーションをデプロイするためのシンプルかつ効率的な方法を提供します。 Gunicorn で Flask アプリを実行すると、Flask アプリケーションと通信する WSGI サーバーが作成されます。 Gunicorn は複数のワーカー プロセスを管理して、受信リクエストを処理し、負荷を分散し、同時ユーザーの処理能力を高めます。いいえ。ワーカーとスレッドの数は、システムのコア数 (2*コア +1) によって異なります。

マルチスレッド化するまでは、個別のメモリ空間はありません。 1 人のワーカーがクライアントからの複数のリクエストを並行して処理できます。

なぜガニコーンが必要なのでしょうか?

さまざまな理由から、Gunicorn (Green Unicorn) は Flask アプリケーションをホストする上で重要なコンポーネントです。まず、Flask の組み込み開発サーバーは複数のリクエストを同時に処理できないため、運用環境には適していません。フォーク前のワーカー モデルは、多数のワーカー プロセスまたはスレッドを実行することでスケーラビリティを実現し、トラフィックの増加に効果的に対応します。 G unicorn の負荷分散はリクエストを均等に分散し、高負荷時のパフォーマンスを向上させます。 WSGI 仕様に準拠した Gunicorn は、Flask およびその他の WSGI 準拠フレームワークとシームレスに統合し、展開を簡素化します。 Gunicorn は同時実行性、スケーラビリティ、パフォーマンス、互換性などの重要な機能を提供するため、実稼働環境で Flask アプリケーションをデプロイするのに不可欠なものとなります。

Nginx: 最前線のリバース プロキシ

Nginx は、安定性、シンプルな構成、低リソース消費で知られる強力で高性能な Web サーバーです。私たちのデプロイメントでは、Nginx は Gunicorn の前に位置するリバース プロキシとして構成されています。クライアントのリクエストを受信して​​ Gunicorn に転送し、Gunicorn が Flask アプリケーションと通信します。 Nginx は、静的ファイルの提供、SSL/TLS 暗号化の処理、およびアプリケーションが複数のサーバーに拡張される場合の潜在的な負荷分散も担当します。

なぜNginxなのか?

さらに、NGINX は、堅牢な負荷分散機能とバッファリング メカニズムのおかげで、複数のモデルやアプリケーションを同時に処理することに優れています。 Gunicorn は複数のリクエストの処理速度に問題があるかもしれませんが、NGINX はリクエストをバッファリングすることでこのワークロードを効率的に処理し、よりスムーズな動作を保証します。さらに、NGINX は SSL 終了、トークン認証、負荷分散などの重要な機能を提供しており、Flask アプリケーションのセキュリティ保護と最適化に不可欠なものとなっています。スケーラビリティと柔軟性をさらに高めるために、Docker または Kubernetes を NGINX と統合して、動的なスケーリングとサービスの管理の簡素化を可能にすることができます。 AWS にデプロイされるか Kubernetes にデプロイされるかに関係なく、NGINX は Flask アプリケーションを大規模にホストするための多用途かつ強力なツールであり続けます。

前提条件

モデルをデプロイする手順を使用する前に、次のことを理解しておく必要があります。

AWS アカウント: EC2 やその他の AWS サービスにアクセスするには、AWS アカウントが必要です。アカウントをお持ちでない場合は、AWS ウェブサイトでサインアップできます。

アプリに名前を付けて表示したい場合は、サーバーを指すようにドメイン名を構成する必要があります。無料で1つ入手できます Freenom。パブリック IP アドレスを直接使用するため、ここではこれは必要ありません。

WSGI ファイルの仕様とサーバー、プロキシ、ポートについての理解。少し理解することも役立ちます。

Gunicorn および Nginx を備えた AWS 上の Flask を使用した機械学習モデルのデプロイ

ステップ 1: AWS EC2 インスタンスをセットアップする

Ubuntu をオペレーティング システムとして使用して AWS EC2 インスタンスを起動します。マイクロサービスは問題なく動作します。インスタンスの名前はセンチメント_分析_サーバーのままにします。好きなものを自由に選ぶことができます。ただし、インスタンスのサービスの選択は、ホストしようとしているアプリケーションの規模によって異なることに注意してください。

AWS EC2 インスタンスをセットアップする

SSH 経由で EC2 に安全に接続するためのキー ペアを作成します。 EC2 インスタンスを作成するときにキー ペアを指定すると、対応する秘密キー ファイル (.pem) がインスタンスへの SSH 接続の認証に使用されます。 RSA タイプのキー ペアを使用し、以下の手順に従います。

  1. キーペアを作成します。 「キーペアの作成」ボタンをクリックしてキーペアを生成します。
  2. 秘密キーをダウンロード: キー ペアが作成されると、秘密キー ファイル (.pem) がローカル マシンに自動的にダウンロードされます。この秘密キー ファイルは、EC2 インスタンスへの SSH 接続を認証します。
AWS EC2 インスタンスをセットアップする

ポートと http トラフィックを許可するセキュリティ構成でインスタンスを起動します。インスタンスを起動して接続したら、そこから SSH コマンドをコピーして、ローカル端末にポストしてインスタンスにリモートでアクセスできるようにします。次の画像では、緑色で強調表示されている部分をコピーしてローカル/ターミナルに貼り付ける必要があります。

インスタンスに接続する

ステップ 2: EC2 インスタンスに SSH 接続する

コンピューターの端末を開きます。秘密キー ファイル (.pem) がディレクトリにある場合は、SSH コマンドを使用して EC2 インスタンスに接続するときに、キー ファイルへのフルパスを指定する必要があります。その方法は次のとおりです。

キー (.pem ファイル) がダウンロードにあるとします。次に、そこに SSH コマンドを配置する必要があります。したがって、ターミナルを開いてダウンロード ディレクトリに移動し、そこにコマンドを貼り付けるだけです。

cd ~/Downloads

ここで、例のような SSH コマンドを貼り付けます: ssh -i “sentiment_analysiskey.pem” [メール保護]

EC2 インスタンスへの SSH 接続

ステップ 3: Ubuntu リポジトリから必要なコンポーネントをインストールする

最初のステップは、必要なコンポーネントをすべて Ubuntu リポジトリからインストールすることです。これには、Pip が管理する Python コンポーネントと Python パッケージ マネージャーが含まれます。 Gunicorn コンポーネントを組み立てるのに必要な Python 開発ファイルも提供されます。 Python 環境の作成を可能にするパッケージをインストールするときは、まずローカル パッケージ インデックスを更新する必要があります。

sudo apt update 
sudp apt upgrade 

次に、Python-pip コマンドをインストールして、pip と仮想環境をインストールします。

sudo apt install python3-pip
sudo apt install python3-venv

次に、net stat パッケージをインストールします。 net-tools パッケージは、アクティブなネットワーク接続、ルーティング テーブル、インターフェイス統計などのネットワーク関連情報を表示します。

sudo apt install net-tools

sudo apt install net-tools

netstat tuln #after installing run this command 

システム上のアクティブなネットワーク接続とリスニング ポートのリストが表示されます。

次に、ファイアウォール パッケージをインストールします。ufw (Uncomplicated Firewall) パッケージは、Ubuntu およびその他の Debian ベースの Linux ディストリビューションで iptables ファイアウォール ルールを管理するためのフロントエンドです。ファイアウォール ルールを構成するための簡素化されたインターフェイスを提供し、システムに不可欠なファイアウォール保護を簡単に設定できるようにします。

  • sudo ufw を有効にします: ファイアウォールを有効にします。
  • Sudo ufw を許可 /: このコマンドは、特定のポートおよびプロトコルでの受信接続を許可します (たとえば、sudo ufw は 22/TCP で SSH 接続を有効にします)。
  • Sudo ufw ステータス: ファイアウォールの現在のステータスとルールを表示します。
sudo apt install ufw #
sudo ufw allow 22 #ssh access
sudo ufw allow 5000  #5000 port for flask app test 

sudo ufw status 
  1. Sudo ufwは5000を許可します: これにより、ポート 5000 での受信接続が許可されます。デフォルトでは、このポートで TCP トラフィックと UDP トラフィックの両方が許可されます。 Flask アプリを 5000 で実行するため、ポート 5000 で実行されている Flask アプリ サービスにネットワークからアクセスできる必要があります。
  2. Sudo ufwは22を許可します: このコマンドは、ポート 22 での受信 SSH 接続を有効にします。SSH はシステムへのリモート アクセスに使用され、ポート 22 での接続を許可すると、SSH 経由でサーバーに安全に接続できます。これは重要; SSH にリモートでアクセスできなくなるため、これをオフにしないでください。

ステップ 4: Flask アプリケーションをデプロイし、アプリケーションをセットアップする

Flask アプリケーションのデプロイ: Flask アプリケーション ファイルを EC2 インスタンスに転送します。モデルがすでに Git Hub 上にある場合は、EC2 Ubuntu インスタンスにクローンを作成します。次に、新しい仮想環境をセットアップし、pip を使用して必要な Python パッケージまたは要件ファイルをディレクトリにインストールします。これで、Test Flask アプリケーションが EC2 環境で正しく実行されます。

この例では、前回の記事でツイートのセンチメントを分析するために使用した Git リポジトリのクローンを作成しています。

ただし、まず git がインストールされていることを確認してください。インストールされている場合は、コマンド git clone -b master –single-branch https://github.com/Geek-shikha/Flask_model_sentiment_analysis.git を実行します。

git --version # if this exists you need not to sudo apt install git 
git clone -b master --single-branch 
https://github.com/Geek-shikha/Flask_model_sentiment_analysis.git #same line 

#after cloning the repository go tot the directory and list all the files 
cd Flask_model_sentiment_analysis
ls 

注: リポジトリのクローンを作成すると、app.py ファイルは表示されません。代わりに、必要な myproject.py が存在します。

Flask アプリをローカルで作成するときに以前に作成した既存の仮想環境があります。エラーや不一致を避けるために、新しい仮想環境を作成する必要があります。新しい仮想環境は「myprojectenv」という名前で、アクティブ化する必要があります。

python -m venv myprojectenv #virtual env named as myprojectenv
source myprojectenv/bin/activate #activate the virtual environment

requirements.txtに保存されているPythonライブラリをインストールします。

pip install -r requirements.txt #install the dependencies like flask, nltk etc.

次に、Python Flask アプリケーションをテストして実行します。

python3 myproject.py

これを実行すると、ターミナルに次のような出力が表示されます。

機能しているかどうかを確認するため。 Web ブラウザでサーバーの IP アドレスに続いて「5000」にアクセスします。 Web ブラウザでは、サーバー IP は http://server_pub_ip:5000 のように 5000 です。サーバーIPが  23.124.09.133. 次に入れます HTTP://23.124.09.133:5000 

ステップ 5: WSGI ファイル

次に、アプリケーションのエントリ ポイントとして機能するファイルを作成します。このファイルは、Gunicorn サーバーにアプリケーションと対話するように指示します。

Flask_model_sentiment_analysis フォルダーに wsgi.py ファイルを作成します

nano ~/Flask_model_sentiment_analysis/wsgi.py 

このファイルでは、myproject.py という名前のアプリケーションから Flask インスタンスをインポートし、実行します。

from myproject import app

if __name__ == "__main__":
    app.run()

エラーが発生した場合は、sudo apt と unicorn をインストールすることもできます。

ステップ 6: Gunicorn の構成

まずは Gunicorn を構成し、wsgi アプリをポート 5000 にバインドすることから始めましょう

unicorn configure コマンドは、任意の IP アドレスからのポート 5000 での受信接続をリッスンする Gunicorn サーバーを起動し、wsgi.py ファイルで定義されている app という名前の WSGI アプリケーションを提供します。

gunicorn --bind 0.0.0.0:5000 wsgi:app

出力:

動作しているかどうかを確認してください。 Web ブラウザでサーバーの IP アドレスに続いて 5000 にアクセスします。Web ブラウザでは、サーバー IP は http://server_pub_ip:5000 のように 5000 です。サーバーIPが  23.124.09.133. 次に入れます HTTP://23.124.09.133:5000 

次のような出力が得られるはずです。

正しい応答が得られた場合は、サービスを停止します。 Ctrl+C を押してから、次のコマンドを入力して仮想環境を非アクティブ化できます。続いて、システムおよびサービスユニットファイルを作成します。このアクションにより、Ubuntu の init システムが自動的に Gunicorn を開始し、サーバーの起動時に Flask アプリケーションをホストできるようになります。

sudo nano /etc/systemd/system/myproject.service

次のコンテンツを追加します。

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/Flask_model_sentiment_analysis
Environment="PATH=/ubuntu/Flask_model_sentiment_analysis/myprojectenv/bin"
ExecStart=/home/ubuntu/Flask_model_sentiment_analysis/myprojectenv/bin/gunicorn 
--workers 3 --bind unix:myproject.sock -m 007 w>
[Install]
WantedBy=multi-user.target
  • [ユニット]: このセクションでは、ユニットのメタデータと依存関係を指定します。
  • 説明: サービスについて説明します。
  • After = network.target:ネットワークが立ち上がった後に本機が起動し、サービス開始前にネットワーク接続が確保されていることを示します。
  • [サービス]: このセクションでは、サービスのパラメータを定義します。
  • ユーザー=ubuunit: サービスを実行するユーザー アカウントを指定します。
  • グループ=www-データ: サービスのグループを設定します。
  • 作業ディレクトリ: サービスの作業ディレクトリを指定します。
  • 環境=”PATH=/ubuntu/Flask_model_sentiment_anasis/myprojectenv/bin”: この変数はサービスの環境変数を定義し、仮想環境のバイナリ ディレクトリを含むように PATH 変数を明示的に設定します。
  • ExecStart: サービスを開始するコマンドを指定します。この場合、特定のオプションを使用して Gunicorn を起動します。
  • –労働者 3: 3 つのワーカー プロセスを使用するように Gunicorn を構成します。
  • –bind unix: 私の project.sock: Gunicorn が Web サーバー (Nginx または Apache など) と通信する際に経由するソケット ファイルを指定します。
  • -m007: マスクを 007 に設定し、Gunicorn によって作成されたファイルのアクセス許可を制御します。
  • wsgi:アプリ: サービスを提供する WSGI アプリケーションの場所を示します。
  • [インストール]: このセクションでは、ユニットのインストール情報を定義します。
  • WantedBy=マルチユーザー.ターゲット: このユニットをインストールするターゲットを指定します。この場合、マルチユーザーに設定されています。ユーザー システムの標準ターゲットであるターゲットは、システムの起動時にサービスが自動的に開始されることを示します。

要約すると、このシステム ユニット ファイルは、特定の構成で Flask アプリケーションを提供するように Gunicorn をセットアップし、システム起動時にサービスが自動的に開始されるようにします。

作成した Gunicorn サービスを起動し、起動時に開始されるように有効にします。

sudo systemctl start myproject
sudo systemctl enable myproject
sudo systemctl status myproject#check the status of your service file for errors, ifany

 コマンドが抵抗する場合は、これを使用して「sudo systemctl daemon-reload」をリロードします。

各手順を実行した場合、エラーは発生しないはずです。ただし、エラーが解決しない場合は、エラーを解決してください。サービスファイルのパスまたは環境にエラーがある可能性があります。注意深く確認してください

ステップ 7: NGINX のインストールと構成

Gunicorn アプリケーション サーバーは動作しており、プロジェクト ディレクトリ内のソケット ファイル経由のリクエストを待っています。次に、設定ファイルに若干の変更を加えて、Web リクエストをこのソケットに送信するように Nginx を設定します。このためには、まず nginx をインストールする必要があります

sudo apt install nginx

まず、Nginx の sites-available ディレクトリ内に新しいサーバー ブロック構成ファイルを生成します。混乱しないように、このファイルに「プロジェクト」という名前を付けます。以前は myproject.py という名前を使用していました

sudo nano /etc/nginx/sites-available/myproject

ファイルにコンテンツを追加します。このファイルには Nginx サーバー ブロック構成があり、指定されたサーバー IP アドレスへの受信 HTTP リクエストが Unix ソケット ファイル経由で Gunicorn アプリケーション サーバーに転送され、Flask アプリケーションがリクエストを処理できるようになります。ファイルを保存してエディタを終了します。

server {
    listen 80;
    server_name 3.110.196.110; #your server public ip 

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/Flask_model_sentiment_analysis/myproject.sock;
    }
}
  • サーバー { … }: このブロックは、Nginx 内のサーバー構成を定義します。これは、特定のサーバーに対するリクエストを処理するための構成設定をカプセル化します。
  • 80を聞いてください: このディレクティブは、Nginx が HTTP トラフィックのデフォルト ポートであるポート 80 で受信 HTTP リクエストをリッスンするように指定します。
  • サーバー名 3.110.196.110: このディレクティブは、サーバーのホスト名または IP アドレスを設定します。この場合、3.110.196.110 に設定されていますが、これはサーバーのパブリック IP アドレスに置き換える必要があります。
  • 位置 / { … }: このブロックは、Nginx がサーバーのルート ディレクトリ / に対するリクエストを処理する方法を定義します。
  • proxy_params を含めます。 このディレクティブは、proxy_params ファイルから構成設定を提供します。これらの設定には通常、プロキシ ヘッダーなどのプロキシ関連の構成が含まれます。
  • proxy_pass http://unix:/home/ubuntu/Flask_model_sentiment_analysis/myproject.sock: このディレクティブは、Nginx が受信リクエストを /home/ubuntu/Flask_model_sentiment_analysis/myproject.sock にある指定された Unix ソケット ファイルに転送するように指定します。ここは Gunicorn がリクエストを聞く場所です。 Nginx はリバース プロキシとして機能し、リクエストを Gunicorn に渡し、レスポンスをクライアントに返します。

有効にしてエラーをテストします

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
  • sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled: このコマンドは、sites-enabled ディレクトリに myproject という名前のシンボリック リンクを作成し、sites-available ディレクトリにある構成ファイルを指します。これを行うと、プロジェクトのサーバー ブロック構成が有効になります。
  • Sudo nginx -t: このコマンドは、Nginx 構成の構文エラーをテストします。新しく有効になった myproject サーバー ブロックを含む Nginx 構成ファイルが正しく書き込まれ、有効であるかどうかをチェックします。エラーがある場合は、このテスト中に報告されます。

設定を更新したのでnginxを再起動します。

sudo systemctl restart nginx

nginx のファイアウォールを更新する

sudo ufw allow 'Nginx Full'

5000 ポートは必要ないので、「sudo ufw deleteallow 5000」コマンドを使用して無効にできますが、ポート 22 を無効にする必要はありません。

次に、Web ブラウザでサーバーのドメイン名 (または IP アドレス) に移動すると、出力が表示されます。

502 ゲートウェイなどのエラーが表示された場合は、いくつかの権限を変更する必要があります。コマンドを使用する

sudo chmod 755 /home/ubuntu

また、アプリケーションのサーバーをテストするときは、アプリケーションは保護されていないため、https ではなく http://….. を使用する必要があります。

エラーがある場合は、次のようなコマンドを使用して確認できます。

ステップ 7: NGINX のインストールと構成

サービスを停止したい場合は、次のコマンドを使用できます

sudo systemctl stop nginx #stop the service 
sudo systemctl start nginx# to start the service 

アプリケーションを保護するためのさらなる手順

アプリケーションを保護するにはさらに手順があります。  

クライアントとサーバー間の安全な通信のために HTTPS を有効にします。 SSL/TLS 証明書 (Let's Encrypt など) を取得し、それを使用するように NGINX を構成します。 Certbot を使用してアプリケーションを保護できます。

Certbot を使用して Web サーバーを SSL/TLS で保護するには、通常、登録されたドメイン名が必要です。 Certbot では、証明書を発行する前にドメインの所有権を確認するため、SSL 証明書を発行するにはドメイン名が必要です。ドメイン名の代わりにパブリック IP アドレスを使用することは技術的には可能ですが、いくつかの理由からお勧めできません。 1 つは認証局 (CA) の要件です。Let's Encrypt (Certbot が利用する) のような認証局 (CA) には、ドメイン検証を必要とするポリシーが定められています。 IP アドレスの SSL 証明書は発行されません。

セキュリティを確保したい場合は、 sudo apt install python3-certbot-nginx を使用し、ドキュメントで詳細を確認してください。

まとめ

この記事では、Python 仮想環境内に基本的な Flask アプリケーションを作成しました。 WSGI エントリ ポイントを生成して、WSGI 対応アプリケーション サーバーとの互換性を確保し、この役割を果たすように Gunicorn を構成しました。その後、システムの起動時にアプリケーション サーバーを自動的に開始するシステム サービス ファイルを作成しました。さらに、Web クライアント トラフィックをアプリケーション サーバーに転送し、外部リクエストを効果的に転送し、Let's Encrypt 暗号化でサーバー トラフィックを保護する役割を担う Nginx サーバー ブロックを構築しました。

スポット画像

最新のインテリジェンス

スポット画像