MENU

【初心者向け】RenderでFlaskアプリを無料デプロイ!GitHub連携でPython Webアプリを自動公開する方法

以前このブログでは「PythonAnywhere」を使ったFlaskアプリの無料公開や、Git/GitHubの基本的な使い方について学びました。

そこで今回はステップアップ編です!Git/GitHubと連携して、超簡単にWebアプリをデプロイできると噂の「Render」を使い、Flaskアプリの無料デプロイに挑戦します。

無料でどこまでできるのか、どんなところでつまずくのか、試行錯誤した様子をお伝えできればと思います。

この記事で分かること
  • Renderの無料プランを使ったFlaskアプリの詳しいデプロイ手順
  • Flaskのデプロイに必須なrequirements.txtとgunicornの準備
  • RenderとGitHubを連携させる具体的な設定方法

▼関連記事

目次

Renderの概要:なぜFlaskデプロイに最適なのか?

まず、「Renderって何?」というところですよね。

Renderは、PaaS(Platform as a Service)と呼ばれるサービスの一つです。

すごく簡単に言うと、「サーバーの難しい設定は全部お任せ!プログラムのコードさえ用意してくれれば、すぐにWebで公開できるようにしてあげるよ!」という、開発者にとって夢のようなサービスなんです。

Renderの特徴
  • Render最大の特徴は「GitHubとの強力な連携」
  • Git/GitHubを使ってソースコードをプッシュするだけで自動でWebアプリに反映される(自動デプロイ)
  • Renderは無料プランも用意されている

RenderでFlaskをデプロイする具体的な手順

では、実際にRenderを使ってFlaskアプリをデプロイしてみましょう!私が実際に試した手順を、3つのステップに分けて具体的に解説します。

手順1:GitHubにFlaskアプリとrequirements.txt gunicornを準備する

最初に、Renderに読み込ませるためのPython WebアプリのソースコードをGitHubに準備します。

シンプルなFlaskアプリ (app.py) の作成

今回は基本に立ち返って「Hello, Render!」と表示するだけの簡単なアプリを用意しました。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Render!"

if __name__ == '__main__':
    app.run(debug=True)

requirements.txt の作成

requirements.txtは、アプリが依存しているPythonパッケージ(ライブラリ)の一覧です。Renderはこれを見て、必要なパッケージを自動でインストールしてくれます。

ターミナル(コマンドプロンプト)で、以下のコマンドを実行すれば一発で作成できます。

pip freeze > requirements.txt

gunicorn の追加【重要ポイント】

Flaskに標準でついている開発用サーバー(app.run())は、あくまで開発用。本番環境で動かすのには向いていないそうです。

そこで必要になるのが「Gunicorn(ぐにこーん)」のようなWSGIサーバーです。これをrequirements.txtに追加して、Render上でFlaskを動かすための「本番用サーバー」として使います。

requirements.txtを開いて、gunicornと一行追記しておきましょう。

Flask==3.1.1  # バージョンは各自の環境によります
gunicorn==23.0.0 # ← これを追記!

GitHubにリポジトリを作成してプッシュ

app.pyとrequirements.txtが準備できたら、GitHubに新しいリポジトリを作成し、この2つのファイルをプッシュします。この手順は、以前の記事で学んだことがそのまま活かせました!

手順2:RenderにGitHubアカウントで登録しリポジトリを連携する

次にRender側の設定です。

Renderの公式サイトへ行き、サインアップします。「GitHubアカウント」を選ぶのが断然おすすめです。連携がとてもスムーズになります。

ログインするとダッシュボードが表示されるので、「New +」→「Web Service」をクリック。

初めて「Web Service」をクリックした場合は、「GitHub」との連携を許可する必要があります。

ここまでの手順で、GitHubとの連携ができました!GitHubとの連携設定を済ませると、自分のGitHubリポジトリの一覧が表示されます。

手順3:無料プランでgunicornを使いデプロイ!Renderの重要設定項目

最後に、デプロイ内容を細かく設定します。設定項目の意味を理解したうえで設定していきましょう!

Renderの重要設定項目
  • Name: サービスの名前を決めます。
    URLの一部になるので、分かりやすい半角英数字の名前にしましょう。(例: my-flask-app-on-render)
  • Branch: デプロイの対象となるブランチです。
    通常はmain(またはmaster)でOK。
  • Region: リージョン(サーバーの場所)を選びます。
    物理的に近い方が表示が速いので、日本からならSingaporeがおすすめです。
  • Build Command: pip install -r requirements.txt
    これは、「デプロイの前にこのコマンドを実行してね」という指示です。ここで、あのrequirements.txtが活きてくるんですね!
  • Start Command: gunicorn app:app
    ここが最大のポイントです! 「ビルドが終わったら、このコマンドでアプリを起動してね」という指示になります。
    最初、app:appの意味が分からず調べました。これは「app.pyというファイルの中にあるappという名前のFlaskインスタンスを起動して」という意味だそうです。
  • Instance Type: Free を選択!
    これで無料で使えます。

全て設定し終えたら、「Deploy Web Service」をクリック!ログがリアルタイムで流れていき、デプロイが完了します!

表示されてURLでデプロイされたシステムを確認できます!

【体験談】Flaskデプロイで初心者がつまずいたエラーと解決策

実際に実践した際に私が遭遇したエラーや注意点があるため、共有しておこうと思います。

事例1:requirements.txtの用意忘れによるModuleNotFoundError

最初のデプロイでいきなりエラーが。「requirements.txt」を用意し忘れて、Flaskが見つからないと怒られてしまいました。

ログに「requirements.txt not found」と親切に書いてあったので、すぐに気づけました。基本ですが、本当に大事なファイルです。

事例2:gunicornを使わずpython app.pyで起動して失敗

Start Commandをpython app.pyと設定したらどうなるんだろう?と試した時のこと。デプロイ自体は成功(Your service is live)するのに、数秒でサーバーが停止してしまう現象が起きました。


これも調べて分かったのですが、RenderのようなPaaSでは、Start Commandのプロセスが終了するとコンテナも停止してしまうんですね。

python app.pyは実行が終わるとプロセスも終了してしまいますが、gunicornはリクエストを待ち受け続けるので、サーバーとして起動し続けてくれる、というわけです。gunicornが重要だということを改めて感じました!

RenderとPythonAnywhereを徹底比較!あなたに合うのはどっち?

無事にデプロイできたところで、「で、結局PythonAnywhereと比べてどうなの?」という点が気になりますよね。

どちらも無料で使える素晴らしいサービスですが、私が実際に両方使ってみて感じたのは、「学習のフェーズによって最適な選択肢が変わる」ということです。

どちらが良い・悪いではなく、あなたの今のスキルや目的に合わせて選ぶのが一番!という視点で、比較表にまとめてみました。

比較軸RenderPythonAnywhere
開発スタイルローカルPCで開発し、git pushで反映させるのが基本。Git/GitHubの利用が前提となる。ブラウザ上で完結。ブラウザ内のエディタでコードを書き、コンソールもブラウザから操作できる。
デプロイ方法自動デプロイ(CI/CD)。GitHubにpushすると、自動でビルドとデプロイが実行される。手動デプロイ。ファイルを更新したら、ダッシュボードの「Reload」ボタンを手でクリックする必要がある。
初心者への優しさ◯ (Gitに慣れていれば)
Gitやコマンドラインの基本知識が少し必要。
◎ (非常に高い)
PCの環境構築が不要で、アカウント登録後すぐに始められる手軽さが魅力。
学べるスキルモダンな開発フロー。git pushを起点とした自動化(CI/CD)という、現代的な開発プロセスを体験できる。Webアプリの基本構造。Linuxサーバー上でファイルがどう置かれ、どう実行されるかという基礎を学ぶのに最適。
無料プランの注意点一定時間アクセスがないとスリープする。そのため、久しぶりのアクセスだと起動に20〜30秒かかる(コールドスタート)。許可されたサイト(ホワイトリスト方式)以外への外部APIアクセスに制限がある。また、常時起動はしない(Scheduled Taskで対応)。
おすすめな人Git/GitHubの基本を学んだ人。実践的な開発・デプロイの流れを体験したい「次のステップ」に進みたい人。プログラミング初心者。「まずは難しいこと抜きで、自分の書いたPythonコードをWebで動かしてみたい!」という最初の一歩を踏み出す人。

結論:学習ステップに合わせて使い分けるのが最強!

こうして比較してみると、両者の違いがはっきりしますね。

PythonAnywhereは、PCに難しい環境構築をしなくても、ブラウザ一つで「Webアプリが動く仕組み」の初歩を学べる点がとても便利です。私もここで基本を学べたからこそ、次のステップに進めました。

一方、Renderは、ローカルで開発してGitでバージョン管理し、pushをきっかけに本番環境へ反映させるという、プロの開発現場でも使われるような「実践的な開発フローを体験できる」という点が良いと感じました。git pushひとつでデプロイが完了する流れは、一度体験しておくと良いですね!

ですので、私からの提案はこうです。

学習手順の推奨
  1. まずはPythonAnywhereで、FlaskをWebで動かす感動を味わう。
  2. 次にGit/GitHubを学び、バージョン管理に慣れる。
  3. そして、その知識を活かしてRenderで、モダンな自動デプロイに挑戦する。

この順番でステップアップしていくのが、挫折も少なく、着実にスキルアップできる理想的な学習ルートではないかと感じました!

PythonAnywhereGit/GitHubの使い方については、以下の記事で解説していますので、よければご覧ください!

まとめ:Gitに慣れていればRenderは便利!

今回、Renderを使ったFlaskアプリの無料デプロイに挑戦し、「Git/GitHubを使った開発フローに慣れている(または、これから慣れたい)人にとって、Renderは最高の選択肢の一つ」だと感じました。

PythonAnywhereが「ブラウザだけで手軽に試せる学習サイト」なら、Renderは「実践的な開発フローを無料で学べるデプロイ基盤」と言えるでしょう。

次は、Renderが無料で提供しているデータベースと連携させたアプリにも挑戦し、またブログでご報告しますね!

最後まで読んでいただき、ありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

非IT職のデスクワーカーです。
簡単な業務効率化やデータ分析にPythonをよく活用しています。
このブログを通してAI技術を身に着け、より業務効率化や新しいものを作りたいと考えています。

目次