99
106

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Python】PythonプログラムをHerokuにデプロイする方法

Posted at

結論(何ができるようになるか)

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までの道

99
106
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
99
106

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?