Heroku、Flask、Pythonについて、Progateやドットインストール、Qiita等でひととおり学習したので、まとめてみる
(1)作業ディレクトリを作成
(2)仮想環境を設定
(3)必要なフレームワークとWEBサーバーをインストール
(4)FlaskファイルをPythonで作成
(5)Flaskファイルを実行してみる
(6)Herokuにデプロイする
①Herokuにアカウント登録する
②HomebrewでHerokuをインストールする
③Gitを用意する
④Herokuにアプリを作成する
⑤ローカルアプリとHerokuアプリを紐つける
⑥Herokuへのデプロイに必要なファイルを作成する
⑦Herokuへデプロイする
(7)エラー対応
①heroku ps:scale web=1で正常になるケース
②heroku ps:scale web=1で正常にならないケース
(8)ファイルを更新する
(1)作業ディレクトリを作成
デスクトップ上でいつも作業してるので、今回もデスクトップ上にディレクトリを設置した。
まず、Macのターミナルを起動して、cd desktop と入力、次にmkdir myprojectと入力、これで、デスクトップ上に、ディレクトリmy-projectを作成。
(2)仮想環境を設定
次に ターミナルで、cd myproject とし、ディレクトリmy-project内に移動。
Pythonのvenvという仮想環境を提供する機能を使ってローカルに開発環境を設定する。
仮想環境は、python -m venv ●●●と設定。●●●は任意の名称で良いが、任意のサブディレクトリが作成され、サブディレクトリ内に仮想環境ファイルが作成される。ただし今回は、python -m venv . としてmyproject直下に仮想環境ファイルを作成した。サブディレクトリ下に仮想環境ファイルを作成すると、後述するHerokuへのデプロイ時になぜかエラーが発生したため、直下に作成した。
python3 -m venv .
その後、仮想環境を有効化するために以下のように入力する。
source bin/activate
ちなみに仮想環境を無効化する場合は、以下のように入力する。
deactivate
(3)必要なフレームワークとWEBサーバーをインストール
次に、フレームワークをインストールする。
pip install flask
それと、WEBサーバーをインストールする。
pip install gunicorn
(4)FlaskファイルをPythonで作成
有効化した仮想環境上で、以下のように入力してmy-project内に実行ファイルを作成。今回はhello.pyというファイルを作成。
touch hello.py
次にhello.pyを開き、以下のように入力する。
なお、app.run()はこのままだとapp.run(debug=false)となり、デバックモードはオフの状態。本番環境ではdebug=trueとすると危険ぽいのでデフォルトのままとした。
詳しくは以下を参考にした。
https://www.subarunari.com/entry/2018/03/10/いまさらながら_Flask_についてまとめる_〜Debugger〜
# -*- coding: utf-8 -*-
# 日本語を使う場合にコメントアウトでも必要
# flaskなどの必要なライブラリをインポート
from flask import Flask
# 自分の名称を app という名前でインスタンス化
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
# app.run()はデフォルトではfalseが設定されている
if __name__ == '__main__':
app.run()
(5)Flaskファイルを実行してみる
再びターミナルで操作する。
作成したhello.pyがちゃんと動くかどうかローカル環境で試してみる。
ターミナルで以下を入力。
python3 hello.py flask run
すると、以下のように表示される。
* Serving Flask app "hello" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - -
ブラウザで、上記の部分の http://127.0.0.1:5000/ にアクセスすると、以下のように表示される。
これでローカル環境では正常に動くことが確認できた。
control + c でターミナル入力モードに戻る。