結論(何ができるようになるか)
PythonのプログラムをHerokuにデプロイできるようになる
背景
Pythonの学習をしはじめて、Herokuを使用する機会が増えてきた。デプロイする際に毎回やり方を調べてやっている。エラーが出たりすることもある。一連の流れをまとめることで、自分自身の知識の定着とHerokuデプロイ時にまとまった情報を確認できるようにするため、今回まとめることにする。
全体の流れ
① プロジェクトフォルダを作成する
② プロジェクトフォルダにデプロイするためのファイルを準備する
・ main.py(プログラムファイル)
・ runtime.txt(Pythonのバージョンを記載)
・ requirements.txt(インストールするモジュールを記載)
・ Procfile(プログラムの実行方法を記載)
※ 構成は状況により異なる
③ Herokuにアプリを作成する
④ Herokuにデプロイする
デプロイ
① プロジェクトフォルダを作成する
# 任意のフォルダを作成
mkdir project
② プロジェクトフォルダにデプロイするためのファイルを準備する
・ main.py(プログラムファイル)
Pythonの実行ファイル
・ runtime.txt(Pythonのバージョンを記載)
Pythonのバージョンを記載するテキストファイル
# 環境に合わせてPythonのバージョンを記載
echo python-3.6.5 > runtime.txt
※Herokuがサポートしているバージョンを記載すること
・ requirements.txt(インストールするモジュールを記載)
実行ファイルに関連するモジュールを記載する
# 関連モジュールの一覧を作成
pip freeze > requirements.txt
※ローカルにインストールしたモジュールがすべてが出力されてしまうので、不要なものは削除すること
・ Procfile(プログラムの実行方法を記載)
プログラムの実行方法を記載するファイル
# なんの言語で何を実行するかを記載
echo web: python main.py > Procfile
③ Herokuにアプリを作成する
・ Herokuにログインし、アプリを作成する
# herokuにログイン
heroku login
# アプリを作成(createの後に名前を入れることで任意の名前をつけられる)
heroku create
④ Herokuにデプロイする
・ リポジトリの作成とリモートリポジトリのひもづけ(一番最初だけ)
# gitの初期ファイルを作成
git init
# ローカルリポジトリに結びつくリモートリポジトリを設定
heroku git:remote -a アプリ名
・ デプロイ
実行プログラム等の変更があった場合はここから↓
# 変更したファイルをインデックスに登録
git add .
# 変更したファイルをリポジトリに書き込む
git commit -am "コメント"
# herokuにローカルで作成したファイルをpush(デプロイ)
git push heroku master
エラー対応
git push heroku masterを実行した時、以下のようなエラーが発生
git push heroku master
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
下記のコマンドで参照先を追加
git remote add heroku https://git.heroku.com/アプリ名.git
環境変数設定
LINE等のトークンなどを設定する場合
heroku config:set LINE_CHANNEL_ACCESS_TOKEN=***********************
プログラムの定期実行
herokuのスケジューラーを使用(heroku scheduler)
アドオンとして提供されている。簡単にセットアップできてコンソールでも使用できる。
※アドオンを使用する場合にはクレカの登録が必須
時間はUTCなので日本時間の場合は9時間足す。
Dynoの使用量確認
freeプランで運用するために気になるDyonの使用量確認
heroku ps
その他のherokuコマンド
herokuコマンド一覧
コマンド | 内容 |
---|---|
heroku logout | ログアウト |
heroku list | アプリ一覧を表示 |
heroku logs | ログを確認 |
heroku config | 環境変数を確認 |
heroku run "コマンド" | コマンドを実行 |
まとめ
gitやherokuはプログラム初心者にはとっつきにくい。英語で記載されていることで、さらにとっつきにくさを助長している。ただ、慣れてしまえば便利なもので、なくてはならないものになる。ここに記載されている内容は基礎的な内容だが、ここに書かれていることが理解できれば、Pythonで実現したいことの範囲が格段に広くなる。Webサービスを公開したり、LINE BOTを作ったり。楽しいことが待っている。
参考にした情報
【初心者向け】PythonによるHeroku環境で簡単LINEBot開発
Herokuでお天気Pythonの定期実行
herokuのDynoの使用量確認
Herokuにpush時にdoes not appear to be a git repository出た時の対処
【Git】新人エンジニア、git pushまでの道