herokuで使用頻度が多かったコマンド集


herokuは、無料でアプリを本番環境にデプロイできるツールです。
かなり手軽にデプロイできるので、AWSでデプロイを経験した後だと拍子抜けするかもしれません。

一方で、無料で使えるが故の注意点もあり、herokuでデプロイしたアプリは一定時間で停止します。その場合は再度アプリを使えば起動しますが、しばらく起動に時間がかかる点が注意です。

例えばLINE BOTをherokuでデプロイした場合、文章を送信してLineから最初の返信が来るまでに暫くタイムラグがあります。
体感としては大体20秒〜30秒くらいでした。

前置きが長くなりましたが、そんなherokuとデプロイを巡って頻繁に使用したコマンドが多々あるので、備忘録の意味を兼ねて下記に記載していきます。

※尚、herokuの環境構築は済んでいる前提です。それについては割愛します。
 間違い等ありましたらご指摘頂けると幸いです。

①herokuにログインする

$ heroku login

文字通りherokuサイトにログインするコマンドです。
ターミナルに入力後、エンターキーで実行します。
コマンドを入力すると下記が表示されるので、もう一回エンターキーを押します

heroku: Press any key to open up the browser to login or q to exit:

するとネットに繋がり画面が自動で表示されます。

Log inの文字を押すとherokuサイトへのログインが完了し、その旨がターミナルにも記載されます。

https://id.heroku.com/login

若しくは上記URLから直にログインも可能です。

②herokuにデプロイする

まずはheroku上にアプリを作成する為に下記コマンドを実行します。

$ heroku create <アプリ名>

上記コマンドを打つだけでheroku状にアプリが作成できます。
<>で囲んでいるアプリ名は任意で決めましょう。
※<>部分は入力する必要はありません。

以降はherokuサイト上でもアプリの管理が可能になります。

アプリ作成が完了したら、次がデプロイです。
下記3つのコマンドを順々に入力していく事でデプロイが完了します。
デプロイは多少時間がかかるので、お待ちください。
※railsユーザーとして記載しているので、各言語によっても違いはあるようです。

$ git add .
$ git commit -m "initial commit"
$ git push heroku master

これでデプロイが完了しました。

③ログの一覧表示

個人的に一番便利だと感じたコマンドです。

エラー原因を探る事や、herokuがどんな挙動をしているかがターミナルで一覧表示が可能です。
時間も表示されるので、いつ何が起きたかも分かります。

$ heroku logs

困った場合に使うと良いでしょう。

④環境変数を設定する場合

環境変数は外部に漏洩すると不味いトークンなどを厳重に管理する為に設定します。
下記はLINE BOTの環境変数を設定した場合の想定です。

私はcontorollerファイルに記載されている文言と入力コマンドを打ち間違えて、トークンが取得できないエラーにハマりました。

なので、スペルミスや記述ミスには十分注意しましょう。
エラーに沼った場合は、上記のheroku logsで原因を探しましょう。

$ heroku config:set LINE_BOT_CHANNEL_SECRET="[LINEのチャンネルシークレット]"
$ heroku config:set LINE_BOT_CHANNEL_TOKEN="[LINEのアクセストークン]"

環境変数は作成するものによって必要・不要があると思うので、適宜設定をして下さい。

⑤アプリの停止&再起動

作ったアプリの挙動がおかしい等の不調が起きた時に使うコマンドです。

アプリの停止

$ heroku ps:scale web=1 

アプリの再起動

$ heroku ps

⑥アプリの削除

不要なアプリはherokuサイト上から削除が可能です。
しかし、それだけだとgitのリモートには残ったままなので削除の作業としては不十分です。
その為、ターミナルから専用コマンドを入力してまとめて削除してしまうのが確実です。

$ heroku apps:destroy --app <アプリ名>

コマンドを入力したら、確認のためにもう一度アプリ名の入力を求められるので、改めてアプリ名を入力して処理を続行すればアプリの削除が完了です。
このコマンドを使えば、Heroku上のアプリもリモートリポジトリもまとめて削除が可能です。

これ以外にもコマンドは当然存在していますが、今回の内容はログイン〜アプリ作成〜デプロイ〜削除に至る過程で使用する頻度が多かったコマンド達でした。