Python Flask で作ったWEBアプリを GitHub にプッシュして Heroku でデプロイするまで

投稿日:2019-05-04



ナカジ(@cp_nakajun)です。

「Python Flask WEBアプリを作ってみる」をやってみたい

というレベルの人のはなしです。

ただ今回はFlaskを使ってWEBアプリを作る、ではなく
Herokuでデプロイする辺りを書き残しておきたいと思います。

なんでか?? 理由ですが

Flaskで(ローカルで動く)超簡単なWEBアプリを作ってみました

せっかくだから試しにどこかで公開(デプロイ)してみたい

HerokuなるPaaS(Platform as a Service)が良さそうだ

調べる、Heroku Command Line Interface (CLI) をインストール

コマンドラインで操作する

みたいな流れになって、Herokuを知るところまでは良かったんですが
今のところ「軽い気持ち」なのになにかをインストールするのがなんか抵抗あって

というのと、「コマンドライン」万歳ってタイプでもレベルでもないので
もうちょっと簡単&気軽にデプロイできないものか…

ということがスタート地点になってる今回です。

なので前提として

  • ローカルで動くFlaskを使ったコードがある
  • GitHubのアカウントを持っている
  • Herokuのアカウントを持っている

という感じですので、ここまでは事前にご準備お願いします。

また、本記事は色々試しながらやってみた結果、うまくいった程度のものなのでご理解ください。

一応、以下のものが動きました。
Midi Number Tool:MIDIナンバーから音名と周波数を判定


Python&Flaskは活かせてないですけどね

GitHubからHerokuでデプロイ

個人的にポイントだと思うところだけ...

GitHubのリポジトリにファイルを準備

GitHubにリポジトリを作成して、以下のようなファイル構成でプッシュします。



ちなみに「reference-URL.txt」は必要ありません
参考にさせて頂いたURLのメモです。m(_ _)m

中身はこちらです。ぜひご参考ください。

で、上記の画像のファイルの中で

  • Convert-Midi-Number.py
  • templates(Folder)
  • static(Folder)

ローカルで動くFlaskを使ったコードの部分です。
これがローカルで動かないといくらHerokuで頑張ってもデプロイできないので注意してください。



で、ここから準備しなければならないのは2つのファイル


  • Procfile
  • requirements.txt

です。

Procfileとは

Herokuのプラットフォーム上にあるアプリケーションのdynosにより実行されるコマンドが何であるかを宣言するためのメカニズムです。

requirements.txtとは

Pythonのパッケージ(ライブラリ)の依存関係を管理しているファイル

Procfileのつくり方??
については色々調べた結果、ちゃんと理解できてませんが

web: gunicorn Convert-Midi-Number:app --log-file -

と記述することで結果上手くいきました。

procfile · herokaijp/devcenter Wiki

次にrequirements.txtです

pip freeze > requirements.txt

僕は仮想環境をつかわなかったアホなので、まるっと書き出されました

Herokuを設定してデプロイする

先ず「Create New App」で新しいアプリを作って(名前を決める)ください。

「Settings」タブをクリックし、Buildpacks項目で「Python」を選択します。


「Deploy」タブに移動し、Deployment method項目で「GitHub」を選択します。
そのまま、GitHubと承認してください。

承認が終わるとリポジトリを探せるようになるのでリポジトリ名を入力して「Serch」ボタンをおして連携してください。


リポジトリとの連携が完了すると以下のようになります。


最初は「マニュアル」でデプロイしてみましょう。

最下部のManual deploy項目の「Deploy Branch」ボタンを押します。


以上で問題がなければデプロイできてるはずです。

お役に立てれば幸いです。

Python学習にオススメ




独学で身につけるPython〜基礎編〜【業務効率化・自動化で残業を無くそう!】icon

【完全初心者向け】絶対に挫折させないPython入門講座icon

みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2022年最新版】icon






シゴトがはかどる Python自動処理の教科書

PythonでExcel、メール、Webを自動化する本


おすすめのクリエイティブ・コーディング関連カテゴリー

クリエイティブコーディング系 講座


ウェブツール

機能はシンプルなものですが、p5.jsやTone.jsで描画したり音が出たりするので遊んでみてください。
・【Midi Number Tools】:MIDIナンバーから音名と周波数を判定します
・【Delay Time Calculator】:テンポに応じた音符の長さを判定します