この記事では、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がエラーを出している場合、以下を確認してください:
- Gunicornが正しく起動しているか。
- Nginxの設定ファイルが正しいか。
- サーバーのセキュリティグループでポート80が開放されているか。
まとめ
これでNginxとGunicornを利用してFlaskアプリをAWS EC2にデプロイする方法を学びました。Nginxでリクエストを受け取り、Gunicornでアプリケーションを処理する構成により、効率的かつスケーラブルなWebサーバーが構築できます。
次回は、いよいよFlaskアプリを立ち上げます。
nginx, gunicornについてはこちらをご覧ください。
これを参考に、あなたのプロジェクトで試してみてください!