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

この記事は、FlaskアプリをAWS EC2で無料でデプロイする究極でジューシーでクリーミーなガイドについてです。この記事の終わりまでに、利用できるリソースがもう1つ増え、最も重要なことは無料であることになります。
目次:AWS EC2にFlaskアプリをデプロイする究極のガイド
- Ubuntu 22.4 LTSを使用してAWS EC2フリーティアアカウントを作成する
- Ubuntu上でSSHに接続する
- EC2にFlaskアプリを追加する
- Gunicorn WSGIサーバーをアクティブ化してFlaskアプリを実行する
- システム設定をGunicornで更新する
- Nginx Webサーバーを実行して、Gunicornにルートリクエストを受け入れる
- Route53を使用せずにドメインをEC2インスタンスに接続する
- SSL証明書を設定する
- 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 daemon-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を通じて、独占的な特典をお楽しみいただくための月額会員に登録する
よくある質問:
Q1: AWSとは何ですか?
A: AWSはAmazon Web Servicesの略で、クラウドコンピューティングおよび関連サービスを提供するAmazonのサービスです。
Q2: AWSの主なサービスには何がありますか?
A: 主なAWSサービスには、EC2(Elastic Compute Cloud)、S3(Simple Storage Service)、RDS(Relational Database Service)、Lambda、ECS(Elastic Container Service)などがあります。
Q3: AWSを使うメリットは何ですか?
A: AWSを使用することで、スケーラビリティ、柔軟性、セキュリティ、信頼性などのメリットを享受することができます。また、リソースの効率的な利用やコスト削減も可能です。
Q4: AWSの料金体系はどのようになっていますか?
A: AWSの料金体系は様々であり、サービスごとに異なる料金モデルがあります。一部のサービスでは従量課金モデルを採用しており、実際に使用したリソースに対して支払いが発生します。詳細な料金情報はAWSの公式ウェブサイトで確認することができます。
Q5: AWSのセキュリティ対策はどのようになっていますか?
A: AWSはセキュリティに非常に高いレベルの注意を払っており、物理的・論理的なセキュリティ対策を講じています。また、AWSは多くのセキュリティ認証や規制を取得しており、お客様のデータを保護するための機能やサービスも提供しています。
Q6: AWSのデータセンターはどこにありますか?
A: AWSのデータセンターは世界中に広く展開されており、各地域に複数のリージョンがあります。具体的なデータセンターの場所はAWSの公式ウェブサイトで確認することができます。
Q7: AWSはどのようにバックアップを行いますか?
A: AWSでは、データのバックアップを自動的に行うことができます。各サービスにはバックアップ機能が備わっており、データの耐久性や可用性を高めるための機能も提供されています。
Q8: AWSのサービスを使うためにはどのようなスキルが必要ですか?
A: AWSの利用には、クラウドコンピューティングやネットワーキングに関する基礎知識が必要です。また、AWSの各サービスに特化したスキルや知識を持つことも重要です。AWSは幅広いトレーニングリソースや認定プログラムを提供しており、スキルの習得をサポートしています。
Q9: AWSはどのようにスケーラビリティを実現していますか?
A: AWSでは、需要に応じてリソースを柔軟に拡張または縮小することができます。これにより、アプリケーションやサービスのパフォーマンスや可用性を向上させることができます。自動スケーリングやロードバランシングなどの機能も利用することができます。
Q10: AWSのグローバルインフラストラクチャについて教えてください。
A: AWSのグローバルインフラストラクチャは高度にスケーラブルであり、多層のセキュリティと冗長性を持っています。これにより、高いパフォーマンスと可用性を提供することができます。