EC2でNginxとGunicornを使ったFlaskアプリのデプロイ方法

この記事では、AWS EC2インスタンスにNginxとGunicornを利用してFlaskアプリをデプロイする方法をステップごとに解説します。必要なコマンドや設定方法を詳しく説明し、初心者でも簡単に構築できる内容にまとめました。


1. Nginxのインストールと設定

Nginxのインストール

まず、EC2インスタンスにログインし、以下のコマンドでNginxをインストールします。

sudo yum -y install nginx


インストール後、バージョンを確認して正しくインストールされたことを確認します。
nginx -v

Nginxの自動起動設定

Nginxを自動起動するには以下のコマンドを実行します。

sudo systemctl enable nginx

ステータスを確認して、Nginxが正常に動作しているかを確認しましょう。

sudo systemctl status nginx.service

Nginxの起動と停止

Nginxを起動するには以下のコマンドを使用します。

sudo systemctl start nginx.service

停止したい場合は、以下のコマンドを実行します。

sudo systemctl stop nginx.service

2. Gunicornを使ったFlaskアプリの起動

Gunicornを使ってFlaskアプリケーションを起動します。以下のコマンドでGunicornをバックグラウンドで起動できます。

gunicorn --bind 127.0.0.1:5000 flask_app:app -D

停止するには以下のコマンドを使用します。

pkill gunicorn

自動起動設定

GunicornをOSの再起動後も自動で起動させるには、systemdサービスファイルを作成する必要があります。


3. NginxとGunicornの連携

Nginxの初期設定

Nginxの設定ファイルにlocationディレクティブを追加し、/に来たリクエストをポート5000のGunicornにリダイレクトします。設定例を以下に示します。

server {
    listen 80;
    server_name <your-server-ip>;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

変更を保存したら、Nginxを再起動します。

sudo systemctl restart ngin

確認

ブラウザでサーバーのIPアドレスにアクセスし、Flaskアプリが表示されるか確認してください。


4. 問題解決と確認

エラーの原因と解決方法

もしNginxがエラーを出している場合、以下を確認してください:

  1. Gunicornが正しく起動しているか。
  2. Nginxの設定ファイルが正しいか。
  3. サーバーのセキュリティグループでポート80が開放されているか。

まとめ

これでNginxとGunicornを利用してFlaskアプリをAWS EC2にデプロイする方法を学びました。Nginxでリクエストを受け取り、Gunicornでアプリケーションを処理する構成により、効率的かつスケーラブルなWebサーバーが構築できます。

次回は、いよいよFlaskアプリを立ち上げます。

FlaskアプリケーションをAmazon Linuxにデプロイする方法

Flaskは、Pythonで構築された軽量なWebフレームワークで、手軽にAPI…
benelop.jp

nginx, gunicornについてはこちらをご覧ください。

nginxとは何か

nginxは、サーバーの負荷を効率的に分散する仕組みを提供するWebサーバーおよ…
benelop.jp

GunicornとWSGIサーバーとは?その役割と仕組みを解説

PythonでWebアプリケーションを開発するときに頻繁に登場する「Gunico…
benelop.jp

これを参考に、あなたのプロジェクトで試してみてください!