Contents
Flask デプロイ Heroku 手順|初心者向け完全ガイド
FlaskアプリをHerokuにデプロイする手順について詳しく解説します。本記事では「ゼロからわかる」視点で、アカウント作成から実際に公開できるまでの一連の流れをステップバイステップで紹介します。Python初心者でも理解しやすい構成にしていますので、ぜひ参考にしてください。
Herokuデプロイの準備: アカウント作成とCLI導入
Herokuデプロイには事前準備が必要です。まずはアカウント登録から始めていきましょう。
Herokuアカウントの登録手順
- 公式サイトへアクセスし、メールアドレスとパスワードを入力します。
- 認証コードが届くので、画面に表示されたコードを入力して完了させます。
- 無料プランは利用できるものの、アプリ起動の制限(1時間毎の再起動)やリソース制限があるため、本格的な運用には有料プラン検討が必要です。
注意: 無料プランではリソースが制限されているため、継続的な運用には有料プランへの移行を検討してください。以下で詳しく述べます。
Heroku CLIのインストール方法
Heroku CLIを導入することで、ローカルでデプロイ手順を確認できます。
| OS | インストール手順 |
|---|---|
| Mac | Heroku CLI公式サイトからpkgファイルをダウンロードし、インストールします。 |
| Windows | ChocolateyやPowerShellからchoco install herokuで導入可能です。 |
| Linux | curl https://cli-assets.heroku.com/install.sh | shで最新版をインストール可能です(apt-getは非推奨)。 |
ローカル環境でのCLI確認
|
1 2 |
heroku --version |
が実行され、バージョン番号が出力されるかを確認します。
注意点: CLIの認証はheroku loginコマンドで別途行います。
Flaskアプリの基本構築と仮想環境設定
Flaskアプリケーションを構築するためには、プロジェクト構成・仮想環境・必要なパッケージ管理が必須です。
プロジェクトディレクトリ構成
|
1 2 3 4 5 |
my_flask_app/ ├── app.py ├── requirements.txt └── venv/ |
app.py:Flaskアプリ本体requirements.txt:インストールするPythonライブラリの一覧venv/:仮想環境のディレクトリ
venvの作成手順
|
1 2 3 4 |
python3 -m venv venv source venv/bin/activate # Mac/Linuxの場合 .\venv\Scripts\activate # Windowsの場合 |
ポイント: requirements.txtを用意することで、ローカル環境とHeroku環境のライブラリバージョンが一致します。
requirements.txt生成方法
|
1 2 |
pip freeze > requirements.txt |
- 重要: Herokuではこのファイルに記載されたライブラリのみが自動でインストールされます。
- 例:
Flask==2.0.1と明示することでバージョン管理が可能です。 - 注意: パッケージを追加した後や、環境変更後に必ず実行してください。
Heroku用設定ファイルの作成
HerokuはProcfileやruntime.txtなどの設定ファイルをもとにアプリを起動します。このセクションで必要なファイルを作成していきます。
Procfileの書き方と役割
ProcfileはHerokuに「どうやってアプリを起動するか」を指示するファイルです。プロジェクト直下に配置し、以下のように記述します。
|
1 2 |
web: gunicorn app:app |
web::エントリポイントの指定(Herokuが認識するため)gunicorn:WSGIサーバーとして使用app:app:Flaskアプリケーションモジュールと名前空間
注意:
Procfileはプロジェクト直下に配置し、拡張子をつけないことが重要です。
runtime.txtでのPythonバージョン指定
|
1 2 |
python-3.9.18 |
- Herokuはこのファイルに記載されたバージョンのPythonを使用します。
- バージョンミスマス防止策:
requirements.txtとruntime.txtで一貫したバージョンを管理しましょう。
環境変数設定方法
Herokuでは環境変数をProcfileやconfig varsに設定できます。たとえば、データベースURLは以下のように設定します:
|
1 2 |
heroku config:set DATABASE_URL="your_database_url" |
重要: 環境変数は
heroku configコマンドで確認可能で、デプロイ時にアプリ内で利用できます。
Gitによるリポジトリ管理とHerokuへのデプロイ
Gitを使用してローカルのコードをHerokuに送信する手順について説明します。
初期コミットとリモートリポジトリ設定
|
1 2 3 4 |
git init git add . git commit -m "Initial commit" |
- 注意点: ファイル構成が複雑な場合、
.gitignoreで不要ファイルを除外する必要があります。
.gitignoreの具体例
プロジェクト直下に以下のようなファイルを作成します。
|
1 2 3 4 5 |
venv/ __pycache__/ *.pyc .env |
注意: 仮想環境やローカル設定ファイルは
.gitignoreで管理し、不要な情報をリポジトリに含めないよう注意してください。
heroku createコマンド実行手順
|
1 2 |
heroku create my-flask-app |
my-flask-appは任意のアプリ名。Herokuが自動でURLを生成します。- 無料プランの制限: 1時間ごとに再起動されるため、継続的な運用には注意が必要です。
git pushで本番環境へプッシュ
|
1 2 |
git push heroku main |
- デプロイ完了後は、
heroku openコマンドでデプロイされたアプリのURLを開けます。
WSGIサーバー構築とgunicorn導入
HerokuではWSGIサーバーを使用してFlaskアプリを起動します。gunicornが一般的に使われます。
gunicornの導入手順
|
1 2 3 |
pip install gunicorn pip freeze > requirements.txt |
- 重要:
requirements.txtにgunicornが記載されていることを確認してください。 - ローカルでのテスト方法:
bash
gunicorn app:app
注意: Herokuとローカル環境の構成が一致していない場合、デプロイ時にエラーが発生する可能性があります。
デプロイ後の確認とよくあるトラブルシューティング
デプロイ後も忘れずに確認事項があり、トラブルシューティングが必要なケースもあります。
アプリURLの取得方法
|
1 2 |
heroku open |
- または、
https://my-flask-app.herokuapp.com/にアクセスします(my-flask-appはアプリ名)。
ブラウザでのアクセステスト
- 期待される結果: 「Hello, World!」と表示されること
- エラーのケース例:
502 Bad Gateway: WSGIサーバー構成が正しくない場合404 Not Found:Procfileが存在しない場合
ログ確認コマンド
|
1 2 |
heroku logs --tail |
- 重要: エラー発生時のログを確認することで、原因特定が可能です。
- よくあるエラー例:
ImportError: No module named 'Flask':requirements.txtにFlaskが記載されていない場合
要点まとめ
Herokuデプロイはアカウント作成→CLIインストール→アプリ構築→ファイル設定→Git送信→WSGIサーバー起動の流れで行います。以下がポイントです。
デプロイのキーポイント
- 無料プランの制限: 1時間ごとに再起動されるため、本格的な運用には有料プランを検討する必要があります。
- ファイル管理の重要性:
Procfileとruntime.txtを正しく記述し、バージョン管理を行うことでデプロイ成功確率が高まります。 - エラーチェック: ログ確認(
heroku logs --tail)や環境変数の再確認でトラブルシューティングを行い、素早く修正してください。
Herokuは初心者でも使いやすいクラウドサービスです。本記事に従ってFlaskアプリをデプロイし、あなたのWebサービス公開を始めてみましょう。