blog details
author


この記事は、FlaskアプリをAWS EC2で無料でデプロイする究極でジューシーでクリーミーなガイドについてです。この記事の終わりまでに、利用できるリソースがもう1つ増え、最も重要なことは無料であることになります。

目次:AWS EC2にFlaskアプリをデプロイする究極のガイド

Ubuntu 22.4 LTSを使用してAWS EC2フリーティアアカウントを作成する

世界中で最高のクラウドエコシステムの1つであるAWSアカウントにサインアップするのは驚くほど簡単で、電子メールを使用して1つの支払いカードを追加するだけです。直接宮崎牛を食べるのと同じくらい簡単です。その後、EC2を検索してインスタンスを作成する必要があります。詳細は以下のとおりです。

  • 新しいインスタンスを作成する
  • Ubuntu 22.04 LTSを選択する
  • .
  • インスタンスタイプに移動し、多数のオプションが表示されます。フリーティアを取得する場合は、t2.microを選択するだけだと思います
  • SSH、HTTPS、HTTPトラフィックなど、ネットワーク設定のチェックボックスを確認する
  • インスタンスに接続するためのキーペアを作成する

Ubuntu上でSSHに接続する

EC2インスタンスを作成しました。手順は薄く、明確で、軽いです。困難なことはありません!その後、ローカルマシンを使用して、インスタンスに直ちに接続する必要があります。いつものように、Mac OSを例に取ります。

  • インスタンス接続ページからキーパームをダウンロードする
  • キーパームファイルを使用するパスに保存して、AWS EC2に接続する
  • ターミナルを開く
  • cd to the path
  • $ chmod 400 <your key name>.pem
  • $ ssh -i <your key name>.pem ubuntu@<Public DNS of your EC2>

両方のコマンドは、インスタンス接続ページからコピーできます。行って、探索してください!この記事よりも更新された機能を見つけることができるかもしれません。AWSは、競合他社と比較して、より脂っこく、油っこくなる傾向があります。

EC2にFlaskアプリを追加する

ここまで来たら、通常の方法でFlaskを設定してアプリを展開するだけです。以下の手順に従ってください:

  • Python virtualenvをインストールする
$ sudo apt-get update
$ sudo apt-get install python3-venv
  • 新しいディレクトリで新しい仮想環境をアクティブにする
// ディレクトリを作成する
$ mkdir lovely
$ cd lovely
// 仮想環境を作成する
$ python3 -m venv venv
// 仮想環境をアクティブにする
$ source venv/bin/activate
// Flaskをインストールする
$ pip install Flask
  • シンプルなFlaskアプリスクリプトを作成する
$ sudo nano app.py
// 以下をapp.pyに追加する
from flask import Flask
app = Flask(**name**)
@app.route('/')
def lovely():
return 'Lovely!!!'
if __name__ == "__main__":
app.run()
  • スクリプトが動作しているかどうかをテストするには、単純にpython app.pyを実行します

Gunicorn WSGIサーバーをアクティブにしてFlaskアプリを実行する

Flaskを実行することは、実際にはWerkzeughの開発WSGIサーバーを実行することであり、このサーバーはWebサーバーからのリクエストを転送します。

Werkezeugは開発用にしかないため、本番用にはWSGIサーバーとしてGunicornを使用する必要があります。以下の手順に従ってください:

  • Gunicornをインストールする
$ pip install gunicorn
  • Gunicornを実行する
$ gunicorn -b 0.0.0.0. :8000 app:app
.
  • Gunicornが実行されています (gunicornを終了するにはCtrl + C)!

Gunicornでシステム設定を更新する

SystemdはLinuxのブートマネージャーです。EC2が何らかの理由で再起動する場合、gunicornを再起動するために使用します。

/etc/systemd/systemフォルダに.serviceファイルを作成し、システムが再起動した場合にgunicornに何が起こるか指定します。

systemdユニットファイルに3つのパーツを追加します。Unit、Service、Installです。

  • したがって、/etc/systemd/systemフォルダにユニットファイルを作成します
$ sudo nano /etc/systemd/system/lovely.service
  • そして、以下をファイルに追加します。
[Unit]
Description=Gunicorn instance for a simple lovely app
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/lovely
ExecStart=/home/ubuntu/lovely/venv/bin/gunicorn -b localhost:8000 app:app
Restart=always
[Install]
WantedBy=multi-user.target
  • その後、サービスを有効にします:
$ sudo systemctl d. aemon-reload
$ sudo systemctl start lovely
$ sudo systemctl enable lovely
  • アプリが実行されているかどうかを確認するには、$ curl localhost:8000を実行します。

Nginxウェブサーバーを実行して、Gunicornへのルートリクエストを受け入れます

最後に、Nginxをリバースプロキシとして設定して、ユーザーからのリクエストを受け入れ、gunicornにルーティングします。

  • Nginxをインストールする — $ sudo apt-get nginx
  • Nginxサービスを開始し、EC2のパブリックIPアドレスに移動して、デフォルトのnginxランディングページを表示します
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
  • sites-availableフォルダ内のデフォルトファイルを編集する
$ sudo nano /etc/nginx/sites-available/default
  • ファイルの先頭に次のコードを追加する
upstream lovely {
 server 127.0.0.1:8000;
}
  • flaskhelloworldへのプロキシ_passをlocation /に追加する
# Some code above
location / {
 proxy_pass http://lovely;
}
  • Nginxを再起動する — $ sudo systemctl restart nginx

Route53を使用せずにドメインをEC2インスタンスに接続する

美味しそうで繊細でおいしいですね?基本的に、アプリはすでにオンラインで動作しています。ただし、まだ進めることがあるため、ドメインに接続する必要があります。

Route 53は、最も一般的に言及されているソリューションの1つですが、無料ではありません。実際、可能な無料であることができます。行く方法は次のとおりです。

  • インスタンスページに移動して、パブリックIPV4アドレスをコピーする
  • DNSに2つのAレコードを追加して、それぞれ@ホストと*ホストに同じIPV4アドレスを使用します。
  • 以前に作成したNginxファイルをsudonanoし、server_nameをドメインに置き換えます。wwwなどのトップレベルドメインタイプを含めることを忘れないでください。

そして、完成です!非常においしい

SSL証明書を設定する

SSL証明書プロバイダーを選択することは、無料であろうと有料であろうと、多くのオプションがあるため、驚くことができます。このピースをお勧めするのは、無料のAlibabacloud SSL証明書を使用してアプリに追加することです。何を待っているの?行こう!

  • このアプローチには、Alibaba cloudでドメインにサインアップする必要があります
  • そうであれば、無料のデジタル証明書に移動して、ドメインを追加して無料のSSL証明書を申請します。
  • 完了したら、キーパームとボディパームを含むSSL証明書セットをダウンロードします。
  • AWS証明書マネージャーに移動して、今すぐダウンロードしたSSL証明書をインポートします。必要な形式に基づいてインポートすることを忘れないでください。指示があります。心配しないでください。
  • 最後に、インスタンスに接続してNginxファイルを戻し、恒久的なリダイレ. クトとSSL証明書に一部の設定を置き換えます。以下は、提供されるサンプルコードです。
server {
 listen 80;
 server_name [example.com](http://example.com/);
 rewrite ^(.*)$ https://$server_name$1 permanent;
}
server {
 listen 443 ssl;
 server_name your domain;
 # ssl on;
 ssl_certificate /etc/nginx/ssl/your digital certificate body file name.pem;
 ssl_certificate_key /etc/nginx/ssl/your digital certificate key file.key;
 ssl_session_timeout 5m;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
 ssl_prefer_server_ciphers on;
 location / {
 root /data/web/;
 index index.jsp index.html index.htm;
 }

AWS EC2でFlaskアプリをデプロイするための完全なスクリプトとコマンド

第 73 章– Ultimate Guide to Deploy Flask App on AWS EC2に興味がある場合は、「第 73 章 + AWS EC2」というメッセージを追加してニュースレターに登録してください。スクリプトを直ちにメールボックスに送信します。

第 73 章– AWS EC2にFlaskアプリをデプロイする究極のガイドをお楽しみいただければ幸いです。もしそうであれば、以下のいずれかをサポートしていただきますようお願い申し上げます。

  • PayPal (paypal.me/Easy2digital)を通じて弊社チャンネルをサポートおよび寄付を行う
  • Easy2Digital YouTubeチャンネルの登録と通知ベルをオンにする。
  • Easy2Digital Facebookペー. ジをフォローしていいね!を押す
  • ハッシュタグ#easy2digitalを使用して、ソーシャルネットワーク上で記事を共有する
  • Easy2Digitalの最新記事、動画、割引コードを受け取るために、週刊ニュースレターに登録する
  • www.patreon.com/louisludigitalを通じて、独占的な特典をお楽しみいただくための月額会員に登録する

Share This Post


よくある質問

AWSはAmazon Web Servicesの略で、クラウドコンピューティングおよび関連サービスを提供するAmazonのサービスです。
主なAWSサービスには、EC2(Elastic Compute Cloud)、S3(Simple Storage Service)、RDS(Relational Database Service)、Lambda、ECS(Elastic Container Service)などがあります。
AWSを使用することで、スケーラビリティ、柔軟性、セキュリティ、信頼性などのメリットを享受することができます。また、リソースの効率的な利用やコスト削減も可能です。
AWSの料金体系は様々であり、サービスごとに異なる料金モデルがあります。一部のサービスでは従量課金モデルを採用しており、実際に使用したリソースに対して支払いが発生します。詳細な料金情報はAWSの公式ウェブサイトで確認することができます。
AWSはセキュリティに非常に高いレベルの注意を払っており、物理的・論理的なセキュリティ対策を講じています。また、AWSは多くのセキュリティ認証や規制を取得しており、お客様のデータを保護するための機能やサービスも提供しています。
AWSのデータセンターは世界中に広く展開されており、各地域に複数のリージョンがあります。具体的なデータセンターの場所はAWSの公式ウェブサイトで確認することができます。
AWSでは、データのバックアップを自動的に行うことができます。各サービスにはバックアップ機能が備わっており、データの耐久性や可用性を高めるための機能も提供されています。
AWSの利用には、クラウドコンピューティングやネットワーキングに関する基礎知識が必要です。また、AWSの各サービスに特化したスキルや知識を持つことも重要です。AWSは幅広いトレ. ーニングリソースや認定プログラムを提供しており、スキルの習得をサポートしています。
AWSでは、需要に応じてリソースを柔軟に拡張または縮小することができます。これにより、アプリケーションやサービスのパフォーマンスや可用性を向上させることができます。自動スケーリングやロードバランシングなどの機能も利用することができます。
AWSのグローバルインフラストラクチャは高度にスケーラブルであり、多層のセキュリティと冗長性を持っています。これにより、高いパフォーマンスと可用性を提供することができます。

今ありません...

shape shape

ニュースレターにご参加

独占的なオートスタイルコンテンツのアップデートとオファーを入手

関連チュートリアル

LearnQuest

Java as a Second Language

The Java as a Second Language Specialization is designed for programmers who want to learn Java. You'll learn Java object orientation, create Java web

The State University of New York

Digital Manufacturing & Design Technology

The State University of New York Digital Manufacturing & Design Technology Specialization will provide a foundation in how digital advances are changi

The State University of New York

Applied Digital Literacy

The State University of New York Applied Digital Literacy Specialization is intended for anyone seeking to develop online, internet researching skills

IBM & LearnQuest

IBM COBOL Basic Testing and Debugging

In this course, you will describe common errors associated with working with COBOL. You will list file status codes. You will also describe the proces

University of Illinois at Urbana-Champaign

Introduction to Business Analytics and Information Economics

The University of Illinois at Urbana-Champaign Solar Panel is a great way to learn about business analytics. This specialization targets learners who