🦁

[LINEBOT] Herokuへデプロイ ③

2021/01/23に公開

はじめに

筆者は、アルバイトでシステム開発を行っている九州大学の大学院生です。
本格的に開発を行っているのは1年ほどです。
対象となるのは「開発経験がほとんどないがLINEBOTで遊んでみたい学生」なので
開発したことたくさんあるよーって人は公式ドキュメントみた方がいいです..💦

記事は複数に分けて投稿しようかな?と思っているので
随時追加していきます!

github

https://github.com/shin-shin-01/LINEBOT.git

投稿内容(予定)

  1. LINEアカウントを作成 @ LINE Developers
  2. Python 基本設定ファイルの作成
  3. おうむ返しBOT作成
  4. ローカルで動作確認
  5. Heroku にデプロイする
  6. リッチメニューの設定方法
  7. ユーザごとにLINEBOTの返信内容を変えてみる

本記事では以下の内容を紹介していきます

⑤ Heroku にデプロイする

3. Herokuへデプロイする

3-1 アプリケーションの作成

全てコマンドから作成もできますが、GUIの方がわかりやすいので作成はこちらを使用します

3-1-1 Heroku にアクセスしてログインする

3-1-2 Create New App からアプリケーションを作成(画像参照)

3-2 Heroku ログイン

3-2-1 ターミナルからherokuにアクセスできるように Heroku CLIをインストール

3-2-2 heroku にログイン (メールアドレスとパスワードを入力)

ターミナル実行
heroku login -i

3-2-3 Buildpacks

今回はPythonアプリケーションをデプロイするため以下のコマンドを実行してください

ターミナル実行
heroku buildpacks:set heroku/python -a ApplicationName

Application Name には先ほど作成したアプリケーションの名前を入れてください

3-3 Heroku 環境変数設定

LINEBOTを heroku にデプロイするにあたって
ローカルで設定していた環境変数をherokuに設定する必要があります
GUIから設定することもできますが、
既に.envファイルを作成しているので、これをherokuにpushします

3-3-1 プラグイン heroku-config をインストール

ターミナル実行
heroku plugins:install heroku-config

3-3-2 ローカルの.envをHerokuと同期させる

ターミナル実行
heroku config:push -a ApplicationName

3-3-3 環境変数の確認

以下のコマンドで設定中の環境変数を確認できます

ターミナル実行
heroku config -a ApplicationName

3-4 Heroku デプロイ設定

作成したコードをHerokuにアップロードすることを"デプロイ"といいます
今回は、「GitHubにコードがプッシュされたら 自動でデプロイする」 ように設定します

Heroku にログインして作成したアプリケーションのページに移動します
その後、Deployから DeploymentMethodConnectToGitHub の設定を行います

  • 自動デプロイ: Automatic deploysでブランチを選択(画像ではmasterが更新されたらデプロイします)、Enable Automatic Deploysをクリック
  • 手動デプロイ: Manual deployでブランチを選択、Deploy Branchをクリック

3-5 コード設定

Heorkuにデプロイするには以下のファイルが必要になります
今回はPythonアプリケーションをデプロイします

必要なファイルと階層構造

.
├── main.py
├── requirements.txt
├── Procfile NEW
├── runtime.txt NEW
├── .env
├── .gitignore

Procfile

Procfileは、アプリケーションのルートディレクトリにあるテキストファイルです。このファイルを使って、アプリの起動時に実行するコマンドを明示的に宣言します。

Procfile
web: gunicorn -b 0.0.0.0:$PORT main:app

runtime.txt

Python のバージョンを指定します

runtime.txt
python-3.9.0

推奨されているバージョンは確認してみてください! Here

requirements.txt

Procfile で記載した gunicorn を追記

requirements.txt
Flask
line-bot-sdk
python-dotenv
gunicorn

これらを作成した後、gitにpushすることでデプロイが始まります。

ターミナル実行
git add .
git commit -m "Heroku 設定"
git push origin master

3-6 Webhookの登録

LINE Developers に移動し
https://ここはアプリケーションの名前.herokuapp.com/callback をwebhook に登録します

Verifyを押して 200 が表示されたら成功です!!!!
LINEBOTを確認すると正常に動作していると思います。

デバッグ作業をするには...?

Herokuにデプロイしているとなぜか動かない時がたくさんあります...
ログを確認するにはローカルから以下のコマンドを実行してください

ターミナル実行
heroku logs --tail -a ApplicationName

おわりに

今回は LINEBOT をHerokuにデプロイしてみました!
ここまでで、LINEBOTが誰にでも利用してもらえるようになりました
Herokuの設定をさらに行うことで 30秒のスリープを回避することもできるのでまた紹介しようと思います
ありがとうございました!

Kaze Shindo
iQLab Engineer

Discussion