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