How to Heroku
概要
プログラミングスクールの最終課題作成のため、Herokuにてデプロイを試みました。カリキュラム中で一度経験したのですが、定着していないと感じたためアウトプットします。
Herokuとは
Herokuとは、アプリケーションをネット上で公開するためのサービスです。この、「ネットワークを通じてアプリケーションを一般公開し、ユーザーが利用可能な状態にする作業」のことを「デプロイ」と言います。通常デプロイには、サーバーPCを準備し、そこにOSの導入やシステム構築などの工程があります。しかしHerokuを使えばgitのリモートリポジトリを使って簡単にデプロイすることができます。
使い方
アカウント作成
まずはHerokuのホームページでアカウント作成を行います。
アカウント作成が完了したら、クレジットカードを登録します。デフォルトのRDBMSがPostgreSQLになっているので、それ以外の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です。
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のデフォルトのRDBMSはPostgreSQLになっているので、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://e-words.jp/w/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0.html