【Raspberry Pi】Heroku CLIのインストールからアプリのデプロイまで

##概要
[Heroku](https://www.heroku.com/)に登録したけど、ラズパイから直接操作したくて、Heroku CLIをインストールしました。一通りの流れを確認するため、簡単なアプリを作成してデプロイまで実施してみました。

##参考にしたサイト

- [how to install the heroku cli on raspberry pi](https://gist.github.com/kogcyc/39087873a8e9a5370376a43020ce1603)
- [Heroku入門(Webアプリの作成とデプロイ)](https://webbibouroku.com/Blog/Article/heroku-getting-started)

##前提条件

- モデル : Raspberry Pi 3 Model B
- OS : Raspbian Stretch

```Bash:
$ uname -a
Linux raspberrypi 4.14.33-v7+ #1109 SMP Tue Apr 10 17:28:38 BST 2018 armv7l GNU/Linux
```

##Herokuアカウント登録
[ここ](https://www.heroku.com/)から登録。

##事前準備
いつもの手順と、gitのインストール。

```Bash:
$ sudo apt-get update
$ sudo apt-get upgrade

$ sudo apt-get install git
$ git --version
git version 2.11.0
```

##Heroku CLIのインストール
[公式サイトのインストール手順](https://devcenter.heroku.com/articles/heroku-cli)を参照したところ、ラズパイ用がないので、「Ubuntu / Debian」の手順を実行するも失敗。
ググった結果、[このサイト](https://gist.github.com/kogcyc/39087873a8e9a5370376a43020ce1603)どおりでインストールできました。

```Bash:
$ wget https://cli-assets.heroku.com/branches/stable/heroku-linux-arm.tar.gz
$ mkdir -p /usr/local/lib /usr/local/bin
$ sudo tar -xvzf heroku-linux-arm.tar.gz -C /usr/local/lib
$ sudo ln -s /usr/local/lib/heroku/bin/heroku /usr/local/bin/heroku
$ heroku -v
heroku-cli/6.16.13-dbb9c23 (linux-arm) node-v9.11.1
```

##アプリの作成からデプロイまで
ほぼ[参考サイト](https://webbibouroku.com/Blog/Article/heroku-getting-started#outline__4)どおりですが、自分の環境でエラーが出たところを追加で記載してます。

```Bash:作業ディレクトリおよびアプリの作成
$ mkdir my-heroku
$ cd my-heroku
$ vi index.php
<?php
echo "Hello, World!";
```

```Bash:ログイン
$ heroku login
Enter your Heroku credentials:
Email: email@aaa.bbb    # 登録したメールアドレス
Password: ************* # 登録したパスワード
Logged in as email@aaa.bbb
```

```Bash:Gitリポジトリ作成
$ git init
$ git add .
$ git commit -m "コメント"
*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your accounts default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident name (for <(null)>) not allowed

$ git config --global user.email "email@aaa.bbb" # エラーが出たので指示通りメールアドレス登録
$ git config --global user.name "namae"          # エラーが出たので指示通り名前登録
$ git commit -m "コメント"                        # 再実行（エラーが出なかった場合は当然不要です）
[master (root-commit) 60ee739] 
 1 file changed, 3 insertions(+)
 create mode 100644 index.php
```

```Bash:クリエイト
$ heroku create アプリ名
Creating ? helloworldheroku... !
 ?    Name is already taken  # ありがちなアプリ名だとクリエイトできない
$ heroku create アプリ名      # アプリ名を変えてもう一回（エラーが出なかった場合は当然不要です）
Creating ? sng70helloworld... done
https://アプリ名.herokuapp.com/ | https://git.heroku.com/アプリ名.git # 公開URLとGitリモートレポジトリが表示されれば成功
```

```Bash:デプロイ
$ git push heroku master
Counting objects: 3, done.
Writing objects: 100% (3/3), 237 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
・・・
remote:        https://アプリ名.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/アプリ名.git
 * [new branch]      master -> master
```

##確認
端末のブラウザで https://アプリ名.herokuapp.com/ にアクセスして、Hello, World! が表示されれば成功です。

##アプリの削除とログアウト
テストアプリなので一旦削除して、最後にログアウトします。

```Bash:
$ heroku apps:destroy --app アプリ名
?    WARNING: This will delete ? アプリ名 including all
 ?    add-ons.
 ?    To proceed, type アプリ名 or re-run this command
 ?    with --confirm アプリ名

> アプリ名
Destroying ? アプリ名 (including all add-ons)... done

$ heroku list
You have no apps.
$ heroku logout
Local credentials cleared
```

##無料枠について
[公式サイト](https://devcenter.heroku.com/articles/free-dyno-hours)によると、（英語が読めないので間違ってるかもしれないけど）以下のような制限があるようです。

- 30分未使用でスリープ
- 無料枠は毎月550時間
- クレジットカード登録で無料枠450時間追加

24時間×30日＝720時間なので、スリープさせずにフル稼働させる場合は、クレジットカード登録または有料プランってことですね。