PythonのfraskをHerokuでデプロイする方法(初心者用)

Python
スポンサーリンク

こんにちは。

PythonのFraskをHerokuでデプロイしてみましたが、初心者の私は15時間くらいかかりました。

学習メモを以下に記載します。誰かの役に立つことを願って。

スポンサーリンク

環境

Ubuntu(Windows10)

Python3.7.4

デプロイするコード

下記のコードをデプロイします。

Helloと出力するだけの簡単なコードです。

from flask import Flask
app = Flask(__name__)
@app.route(‘/’)def index():    return ‘Hello’
if __name__ == ‘__main__’:    app.run()

手順

Herokuにログイン

heroku login

Herokuでcreate

heroku create

Heroku Clone

heroku git:clone -a アプリ名

※アプリ名には、httpや.gitは含めない。

以下の警告がでる

warning: You appear to have cloned an empty repository.

venvで仮想環境を作る

python -m venv 名前

または

python3 -m venv –without-pip 名前

※withoutの前の-は二つ –
表示の問題で-一つになっている場合あり

※pipのインストールが必要

仮想環境に入る

source 名前/bin/activate

(名前)*****と表示されるようになる

pipをインストールする

(名前) $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(名前) $ python3 get-pip.py

flaskとgunicornをinstallする

flaskのインストール

pip3 install flask

よくわかってないが、pipの後に3が必要になる

gunicornのインストール

pip3 install gunicorn

Herokuのデプロイで必要なファイル

runtime.txt

requirements.txt

Procfile

runtime.txt

python-3.7.4

requirements.txt

pip3 freeze > requirements.txt

で自動生成されます

Procfile

拡張子はなしのファイルです

web: gunicorn 実行するファイル名:app –log-file=-

を記載します。※実行するファイル名に拡張子はいりません。

gitへコミット

git add .

git commit -m “***”

git remote add origin https://github.com/***.git

buildpacksの指定

heroku buildpacks:set heroku/python

Herokuへデプロイ

git push heroku master

成功すれば以下が表示されます。

remote: Verifying deploy… done.

To https://git.heroku.com/アプリ名 * [new branch] master -> master

ハマったこと

Herokuでデプロイするには、runtime.txtとかのファイルの用意、あとフォルダ構成も決まりがあることを知らなかった。

仮想環境を作る必要があった。pythonやfraskなど実行に必要なファイルは全てgitにupする必要があり、仮想環境を作らないとRequirements.txtに全ての設定ファイルが記載され、不要なファイルもgitにupする必要がある。

pipをインストールしないと、fraskがインストールできず、実行できない。

Buildpacksの指定をしないとエラーがでる

clonseを作成する必要がある。※意味がよくわかってないのでこれから勉強する

便利コマンド

git remote -v:紐づいているgitとherokuを確認できる

git remote rm heroku:紐づいているheroku アプリの切り離し

git remote rm origin:紐づいているgit の切り離し

git remote add heroku http *****.git:herokuの紐づけ

git remote add origin http *****.git:gitの紐づけ

コメント

タイトルとURLをコピーしました