個人の忘備録になります。基本操作はすべて、macOSのターミナルで行います。
1.Heroku CLIをインストール
ターミナルを開き、下記のコマンドを入力します。
% brew tap heroku/brew && brew install heroku
インストールが終了したら、完了を確認するために下記のコマンドを入力します。
ここでは、heroku/x.y.z出力に表示されるはずです。
% heroku --version
heroku/7.0.0 (darwin-x64) node-v8.0.0
2.ログイン
CLIをインストールした後、heroku loginコマンドを実行します。メールアドレスやパスワードをもとめられるので、入力していきます。
% heroku login
=> Enter your Heroku credentials.
# メールアドレスを入力し、エンターキーを押す
=> Email:
# パスワードを入力して、エンターキーを押す
=> Password:
Logged in as メールアドレス と出力されるとログイン成功です。
3.Heroku上にアプリケーションを作成
% cd デプロイしたいアプリの場所
アプリ作成の際にアプリ名は一意でなければいけないので、他の人がすでに使っている名前だとエラーが表示されます。
またアプリ名がドメインの一部となるので、ドメインに使えない文字列は利用できません。
以上2点に気をつけて、以下のコマンドを入力します。
% heroku create アプリケーション名
正しく設定できたことを確認する場合は、以下を入力します。
% git config --list | grep heroku
入力後、 fatal: not in a git directory 以外が表示されていれば成功です。
4.MySQLを使用する場合
Herokuでは、使用するデータベースの設定が、デフォルトでPostgreSQLになっています。MySQLを使うためには、ClearDBというデータベースサービスが提供しているアドオンを追加することによって、HerokuでMySQLを使用できるようになります。
下記のコマンドを入力して、ClearDBアドオンを追加します。
% heroku addons:add cleardb
Ruby on Railsを使う場合は、MySQLに対応するGemについて考慮する必要があり、そちらの設定を変更します。
まず、下記のコマンドを入力してください。
% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`
これでClearDBデータベースのURLを変数heroku_cleardbに格納できました。
続いて、下記のコマンドを入力します。
% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}
5.Heroku上にmaster.keyを設置
Heroku上には、環境変数(OSが提供するデータ共有機能の1つで、「どのディレクトリ・ファイルからでも参照できる変数」)としてmaster.keyの値を設置します。
まず、下記のコマンドを入力してください。
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
設定が正しくできているか、Herokuの環境変数一覧を表示するには、以下のコマンドを入力します。
% heroku config
入力後、RAILS_MASTER_KEY: という項目がある場合、成功です。
6.アプリケーションをHerokuへ追加
Herokuへコミットをプッシュすることで、Herokuにアプリケーションの情報が追加できます。以下のコマンドを入力します。
% git push heroku master
7.Heroku上でマイグレーションファイルを実行
データベースにはマイグレーションの情報が反映されていませんので、heroku runを頭につけて、マイグレーションを実行してください。
% heroku run rails db:migrate
8.アプリケーションの情報を確認
これまでの作業で、Herokuに反映したアプリケーションの情報を確認するには、以下のコマンドを入力します。
% heroku apps:info
9.アプリケーションを開く
% heroku open
問題なく、アプリケーションが開けましたらデプロイ完了です。
おまけ1:ログのチェック
アプリが適切に機能しないような問題が発生した場合は、ログをチェックします。--tailをつけることでログの最終10行のみ表示にすることができます。
% heroku logs --tail --app アプリケーション名
おまけ2:環境変数が更新されない場合の対処法
ファイルの変更履歴が存在する場合
Herokuにプッシュしたときから少しでもファイルに差分が存在する場合は、通常通りコミットして、そのコミットをHerokuにプッシュすれば問題ありません。以下のコードを上から順に実行していきます。
% git add .
% git commit -m "後から見てわかりやすいコミット名"
% git push heroku master
ファイルの変更履歴が存在しない場合
特に変更するファイルもないがHerokuに設定した環境変数だけ本番環境に反映させたい場合は、上記の方法ですと、「Everything up-to-date(すでに最新の状態に更新されています)」と表示されます。したがって、意図的に空のコミットを作成してHerokuにプッシュする方法を行います。以下のコードを上から順に実行していきます。
% git commit --allow-empty -m "空のcommit"
% git push heroku master