Flaskは、Pythonで構築された軽量なWebフレームワークで、手軽にAPIやWebアプリケーションを作成できます。本記事では、Amazon Linux環境でFlaskアプリケーションをセットアップし、GunicornとNginxを用いてデプロイする手順を解説します。
目次
必要な環境構築
1. Python環境のインストール
Amazon LinuxでPythonとpipをインストールするには、以下のコマンドを実行します。
sudo yum install python3
sudo yum install python3-pip
2. プロジェクトのセットアップ
プロジェクトフォルダの作成
任意の場所にプロジェクトフォルダを作成し、移動します。
mkdir flask_project
cd flask_project
仮想環境の作成と有効化
仮想環境を利用すると、プロジェクト間で依存関係が衝突するリスクを防げます。
python3 -m venv venv
source venv/bin/activate
仮想環境が有効化されると、コマンドラインの先頭に (venv)
が表示されます。
3. 必要なパッケージのインストール
requirements.txt
ファイルを用意して、必要なPythonパッケージを管理します。
例: requirements.txt
Flask==2.3.2
gunicorn
パッケージのインストール:
pip install -r requirements.txt
アプリケーションの準備
1. 環境変数の設定
Flaskアプリケーションを適切に動作させるため、環境変数を設定します。開発環境用の設定は以下の通りです。
export FLASK_APP=app.py
export FLASK_ENV=development
本番環境では FLASK_ENV=production
を指定します。
2. Gunicornによるアプリケーションの起動
Flaskは単独では本番環境向けに最適化されていないため、Gunicornを使用します。
以下のコマンドでアプリケーションを起動します。
gunicorn -w 4 -b 127.0.0.1:5000 app:app -D
-w 4
: ワーカー数(サーバのCPUコア数に応じて調整)-b 127.0.0.1:5000
: バインドアドレスとポート-D
: デーモンとしてバックグラウンドで実行
3. Nginxの設定
Nginxのインストールと設定
Nginxをインストールし、Gunicornにリバースプロキシとして接続します。
sudo yum install nginx
Nginx設定ファイル (/etc/nginx/nginx.conf
) を以下のように編集します。
server {
listen 80;
server_name your_domain_or_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 nginx -t
sudo systemctl restart nginx
注意点
- 仮想環境を使用しない場合: システムのPython環境に直接パッケージをインストールすると、他のプロジェクトと依存関係が衝突するリスクがあります。仮想環境の使用を強く推奨します。
- Gunicornの自動起動: 再起動後もGunicornを起動させるには、systemdサービスファイルを作成します。
システム全体の停止方法
停止する場合のコマンド
pkill gunicorn
sudo systemctl stop nginx
以上で、Amazon Linux環境でのFlaskアプリケーションのデプロイが完了です。