Herokuで簡単デプロイ

作成したアプリケーションを全世界に公開するには、またさらにいろんなものが必要になってくる。そのいろんなものとは、サーバーやOS、データベースなどで、Webサービスを実際に公開するの必要なPaaS(Platform as a Service)というサービスを使う。

Herokuとは

PaaSであり、無料で簡単にアプリケーションをデプロイできるサービスのこと。 HeokuのデータベースはデフォルトでPostgreSQLが使われていますが、今回はMySQLを使ったデプロイについて書くので、Railsファイルの設定記述等が多少変わってきます。

Gem導入

まずは、RailsアプリケーションをHerokuにデプロイするために必要なGemを導入する。 Gemfileの grep : production に rails_12factor を追記する。

group :production do
  gem 'rails_12factor'
end

Heroku CLI をインストール

コマンドラインでHerokuを操作できるようにする。

% brew tap heroku/brew && brew install heroku
  • Herokuのバージョン確認コマンド
% heroku --version
  • Herokuログインコマンド
% heroku login --interractive

このときHerokuアカウントに登録した、メールアドレスとパスワードを入力する。

RailsアプリケーションをHeroku上に作成する前に

Gitにコミットする。

% git add .

この最後のチョン( . ) が大事。このチョンだけで全ファイルを指している。

% git commit -m "コミット名"

コミットできた。

Heroku上に公開するアプリケーションを作成

% haroku create アプリ名

ちゃんとできたか確認するには以下のコマンド

% git config --list | grep heroku

データベースの設定

最初に書いた通り今回はMySQLを使うので、ClearDBアドオンの追加が必要。 ClearDBアドオン追記のコマンド

% heroku addons:add cleardb

Rails on Ruby を使ったアプリケーションなので設定の変更が必要。 何をするかというと、追加したClearDBデータベースのURLを変数heroku_cleardbに格納する。

% heroku_cleardb = `heroku config:set CLEARDB_DATABASE_URL`
% heroku config:set DATABASE_URL = mysql2${heroku_cleardb:5}

セキュリティ面

サーバーのアクセスキーやAPIキーなど外部に漏らしたくない情報は暗号化する。 アプリケーションをデプロイする際、暗号化された状態で開発環境から本番環境にプッシュされ、暗号化を解く鍵は開発環境と本番環境のそれぞれで用意する。

  • 暗号化された情報を持つ秘密箱 (credential.yml.encファイル)

  • 暗号化を複合する鍵(master.keyファイル)
    この2つは1セットになる。
    秘密箱1つにつき、鍵も1つ。

環境変数(キーボックス)

Heroku上で環境変数を設定する。

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

このRAILS_MASTER_KEYというのが環境変数、つまりキーボックスの名前

ちなみに heroku config は、環境変数の参照・追加・削除等で使う。 例えばこんな感じ

# 環境変数一覧
$ heroku config

# 環境変数名を指定して参照
$ heroku config:get ENV_NAME

# 環境変数を追加
$ heroku config:set ENV_NAME="value"

# 環境変数を削除
$ heroku config:unset ENV_VAR_NAME

Herokuへコミットをプッシュする

Herokuへコミットをプッシュして、Herokuにアプリケーション情報を追加する。

% git push heroku master

またheroku上でデータベースをmigrateするには、頭に heroku run をつけてあげるだけ。

% heroku run rails db:migrate

アクセスを確認

以下のコマンドを実行すると自動でブラウザが開き、HerokuアプリのURLにアクセスする。

% heroku open

アプリケーションに変更や修正をして再度Herokuにプッシュ

変更や修正をGitにコミットして、マスターブランチであることを確認してから、

% git push heroku master

データベースやテーブルに変更・修正をしている場合は、

% heroku run rails db:migrate

終わりに

プログラミング言語を学習してアプリケーション作ったと思ったら、今度はそれを公開するために、またいろんな技術を組み合わせることにアセアセしてるプログラミング初心者です。特にこの”接続”する感じ。初めはヒヤヒヤしながら、合ってるかなーとか思いながらだけど、ちゃんと理解していきたい。このいろんな技術の”接続”ができるようになったきたらもっと幅広がって面白くなるんだろうな!