エンジニア転職日記

エンジニア転職に向けての日記です

How to Heroku

概要

プログラミングスクールの最終課題作成のため、Herokuにてデプロイを試みました。カリキュラム中で一度経験したのですが、定着していないと感じたためアウトプットします。

Herokuとは

Herokuとは、アプリケーションをネット上で公開するためのサービスです。この、「ネットワークを通じてアプリケーションを一般公開し、ユーザーが利用可能な状態にする作業」のことを「デプロイ」と言います。通常デプロイには、サーバーPCを準備し、そこにOSの導入やシステム構築などの工程があります。しかしHerokuを使えばgitのリモートリポジトリを使って簡単にデプロイすることができます。

使い方

アカウント作成

まずはHerokuのホームページでアカウント作成を行います。

signup.heroku.com

アカウント作成が完了したら、クレジットカードを登録します。デフォルトのRDBMSPostgreSQLになっているので、それ以外のRDBMSを利用している場合はクレジットカードの登録が必要です。

Heroku CLIの導入

Herokuは基本的にターミナルから操作します。Heroku CLIをインストールすると、herokuコマンドを使用できるようになり、ターミナルからHerokuへアクセスすることができるようになります。

% brew tap heroku/brew && brew install heroku

インストールが終了したら、正常にインストールされているか確認します。

% heroku --version

heroku/7.40.0 darwin-x64 node-v12.16.2

バージョンが表示されたら成功です。

それでは、そのままログインしていきましょう。

% heroku login --interactive
  => Enter your Heroku credentials.
  => Email:[登録したメールアドレスを入力してEnter]
  => Password[登録したパスワード入力してEnter]
rails_12factorの導入

rails_12factorは、assetやlogをHeroku用に調整してくれるGemです。

totutotu.hatenablog.com

Gemfileに記述します。

group :production do
  gem 'rails_12factor'
end
heroku_app % bundle install

commitします。

heroku_app % git add .
heroku_app % git commit -m "gem rails_12factorの追加"

 

Heroku上にアプリケーションを作成

アプリケーションのディレクトリにて、以下のコマンドを実行します。

heroku_app % heroku create [アプリケーション名]

正しく設定できたか確認します。

heroku_app % git config --list | grep heroku

fatal: not in a git directory と表示された場合は正しく設定できていません。

 

MySQLを使えるようにする

HerokuのデフォルトのRDBMSPostgreSQLになっているので、MySQLが使えるように設定していきます。

ClearDBアドオンを導入します。これはMySQLを使用するための拡張機能です。

heroku_app % heroku addons:add cleardb

これでデータベースの設定がMySQLになりました。

次は、MySQLのバージョンを合わせていきます。

heroku_app % heroku config | grep CLEARDB_DATABASE_URL

CLEARDB_DATABASE_URL: mysql://000000000000:1aaa0000@us-cdbr-east-06.cleardb.net/heroku_aaa00000000?reconnect=true

CLEARDB_DATABASE_URL: mysql://〜略〜=true となっています。これは、clearDBのURLです。先頭のmysqlの記述が、アプリケーションのmysqlのgemのバージョンと一致している必要があります。今回はmysql2というgemを利用しているので、mysql2://と変更していきます。

heroku_app % heroku config:set DATABASE_URL='mysql2://000000000000:1aaa0000@us-cdbr-east-06.cleardb.net/heroku_aaa00000000?reconnect=true'

 

暗号化

サーバーのアクセスキーやAPIキーなど、暗号化すべき情報もHeroku上で管理することになります。そのため、それらを復号する鍵を用意します。

Heroku上で環境変数を設定します。環境変数とは、OSが提供するデータ共有機能の1つです。ここでは、RAILS_MASTER_KEYという環境変数を用意して、その中にmaster.keyを保管しておく、という使い方をします。それによって外部からの参照を防ぎます。

master.keyを環境変数に設定していきます。

heroku_app % heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

設定できているか確認します。

heroku_app % heroku config

RAILS_MASTER_KEY: という名前で変数が設定されていればOKです。

 

アプリケーションをHerokuへpushする

gitのリポジトリにあるアプリケーションをHeroku上にpushします。この作業は機能追加ごとに行います。

heroku_app % git push heroku master

 

Heroku上でマイグレーションする

アプリケーションをHerokuに反映することはできましたが、DBの情報が反映されていません。Heroku上でもマイグレーションを実行していきます。

heroku_app % heroku run rails db:migrate

 

公開したアプリケーションを確認する

アプリケーションの情報を確認するには、heroku apps:infoコマンドを実行します。

Web上でのURLを確認することができます。

heroku_app % heroku apps:info

 

以上でデプロイ作業は終了です。

 

参考

http://totutotu.hatenablog.com/entry/2015/08/21/Rails%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92Heroku%E3%81%B8%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D

http://e-words.jp/w/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0.html

https://www.sejuku.net/blog/7858