12 日間 (7 日目) - 電子メールベースの受信プロセッサの構築と展開
12 日間の DigitalOcean の 7 日目へようこそ!本日、このシリーズの 2 番目のプロジェクトであるメールベースの領収書処理サービスを開始します。このアプリは、電子メールで送信された領収書をデータベースに整理することで、生活を少し楽にするように設計されています。必要なレシートを見つけるために受信箱を際限なくスクロールする必要はもうありません。
誕生日リマインダー サービスを気に入った場合は、次のステップも気に入っていただけるでしょう。これは、DigitalOcean がアイデアを実際に機能するソリューションに変えるのにどのように役立つかを強調する、もう 1 つの実用的な、本番環境に対応したアプリです。このチュートリアルが終わるまでに、Flask アプリは Web 上で稼働し、プロのように領収書データを処理できるようになります。
✨ なぜこのアプリなのか?
納税時期や還付に向けて、特定の領収書を慌てて探した経験は誰しもあるはずです。楽しくないよ。このアプリは、プロセス全体を自動化することでそれを解決することを目的としています。
アプリの仕組み
- 領収書を特定のメール アドレスに転送します。
- アプリはスマートツールを使用してベンダー、金額、 日付などの詳細を抽出します。
- これらの詳細は PostgreSQL などのデータベースに保存され、そこできちんと整理されます。
- 領収書が処理されると、電子メールまたは SMS で確認が届きます。
シンプルかつ効率的で、面倒な作業が不要になります。 今日は、Flask を使用してバックエンド システムを構築し、Gunicorn を使用して本番用にセットアップし、DigitalOcean のアプリ プラットフォームにデプロイすることに重点を置いています。
🚀 学ぶ内容
今日取り上げる内容は次のとおりです。
- レシートプロセッサの基盤として機能するFlask アプリをセットアップします。
- 実稼働ワークロードをスムーズに処理できるようにGunicorn を構成します。
- バージョン管理とコラボレーションにはGitHub を使用します。
- アプリを DigitalOcean のアプリ プラットフォームにデプロイして、ライブ状態にしてすぐに使用できるようにします。
このチュートリアルでは、管理しやすく楽しいものを保ちながら、実際の Flask アプリをデプロイする実践的な経験を提供します。
🛠 必要なもの
始める前に、次のものが揃っていることを確認してください。
- DigitalOcean アカウント。お持ちでない場合は、ここからサインアップできます。
- Python 3.8 以降 がローカル マシンにインストールされている。
- Git がインストールされ、すぐに使用できるようになりました。
🧑🍳 7 日目のレシピ: Flask アプリの構築とデプロイ
ステップ 1: Flask アプリをセットアップする
Flask はこのプロジェクトのバックボーンとして機能し、すべての受信リクエストを処理し、受信データを処理します。まずは基本的な設定から始めましょう。
プロジェクト ディレクトリを作成します:
すべてを専用のフォルダーに保存すると、プロジェクトが成長するにつれて管理が容易になります。次のコマンドを実行してディレクトリを設定します。mkdir email-receipt-processor cd email-receipt-processor
仮想環境のセットアップ:
仮想環境はプロジェクトのサンドボックスのようなものです。依存関係が分離された状態に保たれるため、他の Python プロジェクトやシステムの Python セットアップを誤って壊すことがなくなります。pip install virtualenv virtualenv -p python3 venv
仮想環境をアクティブ化します。 仮想環境をアクティブにして、プロジェクトの依存関係をローカルにインストールします。
source venv/bin/activate
Flask と Gunicorn をインストールします:
Flask が Web フレームワークとなり、Gunicorn が運用サーバーの役割を担当します。pip install Flask gunicorn
依存関係を保存する:
requirements.txt
ファイルにより、プロジェクトを実行している全員 (およびすべてのマシン) が同じ設定になっていることが保証されます。pip freeze > requirements.txt
Flask アプリを作成します:
単純な Flask アプリから始めましょう。app.py
というファイルを作成し、次のコードを追加します。from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Welcome to the Email-Based Receipt Processor!" if __name__ == "__main__": app.run()
-
ローカルでテストする:
アプリを起動し、ブラウザで確認します。python app.py
ブラウザを開いて、
http://localhost:5000
に移動します。次のメッセージが表示されます。「電子メールベースの受信プロセッサへようこそ!」 」
ステップ 2: Gunicorn 構成を追加する
Flask の組み込みサーバーは開発には最適ですが、実稼働アプリのトラフィックとパフォーマンスのニーズを処理するように設計されていません。そこでガニコーンの登場です。
Gunicorn 構成ファイルを作成する:
Gunicorn には、アプリの実行方法を知るために構成ファイルが必要です。次のものを使用して作成します。touch gunicorn_config.py
Gunicorn の設定:
gunicorn_config.py
を開いて以下を追加します。bind = "0.0.0.0:8080" workers = 2
bind
: Web 経由でポート 8080 でアプリにアクセスできるようにします。
workers
: アプリが処理できる同時リクエストの数を設定します。 2 は、小規模なアプリの開始点として適しています。
ステップ 3: GitHub にプッシュする
GitHub は魔法が起こる場所です。これにより、アプリのバージョン管理や DigitalOcean との統合が可能になります。
Git リポジトリの初期化:
.gitignore
ファイルは、不要なファイル (仮想環境など) が Git によって追跡されるのを防ぎます。走る:git init echo "venv/" > .gitignore echo "*.pyc" >> .gitignore git add . git commit -m "Initial Flask app with Gunicorn"
たとえば、VS Code でのプロジェクトは次のようになります。
GitHub リポジトリを作成する:
GitHub に移動し、email-receipt-processor
という新しいリポジトリを作成し、手順に従って設定します。コードを GitHub にプッシュします:
ターミナルに戻り、次のように入力します。
git branch -M main git remote add origin https://github.com/<your-github-username>/email-receipt-processor.git git push -u origin main
をGitHub ユーザー名に置き換えます。
ステップ 4: DigitalOcean のアプリ プラットフォームにデプロイする
今度はアプリをデプロイします。 DigitalOcean のアプリ プラットフォームを使用すると、これが簡単になります。
DigitalOcean で新しいアプリを作成する
DigitalOcean ダッシュボードにログインし、アプリに移動します。
[アプリの作成] をクリックし、GitHub を選択して、
email-receipt-processor
リポジトリに接続します。[GitHub アカウントに接続] をクリックします: DigitalOcean を承認するために GitHub にリダイレクトされます。プロンプトが表示されたら、GitHub にログインし、DigitalOcean にリポジトリへのアクセスを許可します。
リポジトリの選択: 使用可能なリポジトリのリストから、前に作成した
email-receipt-processor
リポジトリを選択します。 <$>[note] ヒント: デプロイメント用に正しいブランチ (例:main
) を選択していることを確認してください。 <$>[保存して続行] をクリックします: これにより、DigitalOcean アプリ プラットフォーム構成画面にリダイレクトされます。
導入設定を構成する
ドロップダウンからリポジトリを選択: アプリ プラットフォームに戻ると、接続されているリポジトリがリストされたドロップダウンが表示されます。
電子メール受信プロセッサ
を選択します。リソースの選択: アプリのリソース割り当て (RAM、CPU、帯域幅) を調整できます。
これらの設定を変更するには、[編集] をクリックします。このチュートリアルでは、次の構成をお勧めします。
- RAM: 512 MB
- これらの設定を変更するには、[編集] をクリックします。このチュートリアルでは、次の構成をお勧めします。
- RAM: 512 MB
- CPU: 1vCPU
- 帯域幅: 50 GB
実行コマンドを設定する
[実行コマンド] セクションまで下にスクロールします: このステップにより、DigitalOcean が本番環境でアプリを起動する方法を認識できるようになります。
[編集] をクリックします: デフォルトのコマンドを次のものに置き換えます。
gunicorn --worker-tmp-dir /dev/shm -c gunicorn_config.py app:app
このコマンドは、Gunicorn を使用して Flask アプリを提供します。
--worker-tmp-dir /dev/shm
フラグは、コンテナ化された環境でのパフォーマンスを最適化します。設定の確認: 最後の画面で、アプリの設定を確認します。リソース割り当てと実行コマンドが正しいことを確認してください。次に、[戻る] をクリックしてリソースに戻ります。
導入設定の最終決定
環境変数: 次の画面に、環境変数を設定するオプションが表示されます。ここでは、すべてをデフォルトのままにし、[次へ] をクリックします。
アプリのリージョン: 対象ユーザーに近い展開リージョンを選択するか、デフォルトのままにします。
リソースの作成: 最後の画面で、アプリの設定を確認します。次に、[リソースの作成] をクリックします。これにより、展開プロセスが開始されます。 DigitalOcean がすべてをセットアップする間、座ってお待ちください。
デプロイメントを検証する
デプロイメント ステータス: アプリがデプロイされると、アプリのパブリック URL へのリンクを含む確認画面が表示されます。
アプリをテストする: ブラウザで URL にアクセスします。次のメッセージが表示されるはずです。 「電子メールベースのレシート プロセッサへようこそ!」 」
🎁 まとめ
やったね!今日達成したことは次のとおりです。
- レシートプロセッサを起動するための Flask アプリを構築しました。
- Gunicorn を本番環境に対応できるように構成しました。
- アプリを DigitalOcean のアプリ プラットフォームにデプロイし、ライブですぐに使用できるようにします。
アプリが起動して実行できるようになりました。これは、このシリーズの重要なマイルストーンです。次のチュートリアルでは、電子メールの転送を処理するために Postmark を統合することで、さらに作業を進めます。アプリをレベルアップする準備をしましょう。それは素晴らしいものになるでしょう! 🚀
このシリーズの次のチュートリアルは 8 日目です: 消印を Flask アプリに接続する。