Python Flask で作ったWEBアプリを GitHub にプッシュして Heroku でデプロイするまで
ナカジ(@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」ボタンを押します。
以上で問題がなければデプロイできてるはずです。
お役に立てれば幸いです。