Herokuを使いこなすのに必要な術


![](https://i.imgur.com/xFSWIOQ.png)

herokuとは、簡単に言うと **クラウド上のサーバの一種** です。

Webサイトを立ち上げようと思うと、自身でサーバをたてて設定しないといけませんが、
herokuを利用すると、簡単にサーバをたてられて、Webサイトを作れます。

厳密には、PaaS（Platform as a Service: アプリケーションを実行するためのプラットフォームをインターネットを介して提供するサービス）の一種です。
サーバやOS、データベースなどのプラットフォームを、インターネットを介して利用することができます。

herokuの一番良いところは、ほぼ **無料** で使える点です。
プライベートで利用する分には無料プランで十分済むので、
自分はプライベートでよく使っています。

この記事ではherokuを使いこなす術をいくつか紹介します。

## 開発環境

- OS: MacOS v10.13
- Terminal: iTerms
- Shell: zsh

クラウド環境（herokuマイページ）と、
ローカル環境（Terminal）の操作がメインとなります。

## 始める前に

Herokuに新規登録・ログインする必要があります。
https://signup.heroku.com/

クレジットカード情報の登録が必須みたいですが、
プランを切り替えない限り無料で問題なく利用できます。

アクセス数が多くなるものを作りたい場合は、有料プランの方が良いかもです。
詳しくは[こちら](https://devcenter.heroku.com/articles/free-dyno-hours)。

## ログイン

ローカル環境で、herokuにログインします。

```
$ heroku login
```

メールアドレスとパスワードを聞かれるので、入力してログイン完了。

## アプリケーションの作成

ローカル環境でheroku上にアプリケーションを作成します。
作成したアプリケーションは[ダッシュボード一覧](https://dashboard.heroku.com/apps)に載ります。

```
$ heroku create
```

上記コマンドでも作成可能ですが、アプリケーション名がランダムになります。
アプリケーション名を指定したい場合は、名前を指定しましょう。

```
$ heroku create アプリケーション名
```

## デプロイ

ローカルで作成したコードをheroku上にデプロイします。
htmlファイルをデプロイすれば、
`https://アプリケーション名.herokuapp.com/` 上でページが開けるようになります。

```
$ git push heroku master
```

### git管理しているコードをデプロイする場合

上記のデプロイでも問題ないですが、
herokuアプリケーションと、対象のgitリポジトリを紐付けてあげれば、
git pushするだけで、自動的にデプロイするように設定できます。

![](https://i.imgur.com/Yp3ZX22.png)

herokuアプリのDeployタブで、上記のように
gitリポジトリ紐付け・Automatic deploysを設定すれば実現できます。

## herokuにアップしたアプリをブラウザで開く

herokuサイト上の `Open App` ボダンでも開けますが、
ローカルからだと下記コマンドで開けます。

```
$ heroku open
$ heroku open -a アプリケーション名 #App指定する場合
```

## 環境変数の確認・追加

いわゆるconfigです。herokuアプリのSettingタブの`Config Vars`
からも確認できますが、ローカルに出力することもできます。

```
$ heroku config
```

追加も同様、herokuアプリのSettingタブの`Config Vars`からもできます。
ローカルからのコマンドで行う場合は下記です。

```
$ heroku config:set NAME='xxxxxxxxxx'
```

## ツールを追加・確認

herokuサーバだけではシステム構築の幅が広くはないです。
DBなどのツールを利用したいときは、 `addon` することができます。
例えばClearDBをaddonしたい場合は下記です。

```
$ heroku addons:create cleardb:ignite
```

追加したaddonは下記コマンドで一覧を確認できます。
また、herokuアプリのOverviewタブでも確認できます。

```
$ heroku addons
```

## ログを確認

デプロイ時のログをターミナル上に表示できます。

```
$ heroku logs
```

リアルタイムで見ることもできます。 `--tail` も `-t` も同じです。

```
$ heroku logs -t
$ heroku logs --tail
```

## ステータスの確認

今Sleepモードなのかどうかなど、サーバ状態などの確認をすることができます。

```
$ heroku ps
```

## ドメインの確認

今どのドメインが振られているかの確認です。

```
$ heroku domains
```

## アプリケーション一覧を確認

[ダッシュボード一覧](https://dashboard.heroku.com/apps)で確認できます。
また、ローカルから下記コマンドで確認できます。（どちらでも可）

```
$ heroku apps
$ heroku list
```

## herokuアプリケーションが2つ以上ある場合

基本的に `$ heroku create` コマンドを実行したPC且つ階層であれば、
対象のherokuアプリケーションが設定されています。

ただ別PCなどから、既存のherokuアプリケーションを利用したい場合、
対象のherokuアプリケーションが設定されていません。
その際は、指定することができます。config確認の場合は下記。

```
$ heroku config --app アプリケーション名
```

ただ、どのコマンドにも `--app アプリケーション名` を付けないといけないので、
面倒なやり方ではあります。

## herokuにコマンドを実行

heroku上のデータベースを設定したいときの場合など、
herokuにコマンドを実行してあげる必要があります。

```
$ heroku run コマンド
```

でローカルから実行できます。
またこれは、herokuアプリ上でも `Run Console` があり、そこに直接

```
$ コマンド
```

しても同様にコマンド実行ができます。

## herokuAppの名前を変更

HerokuAppのnameを変更することができます。
Heroku管理画面でも変更はできますが、オススメしません。
デプロイコマンドに `--app NewName` を毎回付けないといけなくなるので。

herokuAppのディレクトリroot階層で変更します。

```
$ heroku rename NewName
```

herokuAppのディレクトリ外で変更する場合はコマンドは下記。

```
$ heroku rename NewName --app OldName
```

## ログアウト

ローカル環境でログアウトしたい場合は下記コマンド。

```
$ heroku logout
```

## まとめ

まだまだたくさんあると思うので、都度更新していきます。