Herokuとは
Heroku
とはクラウドサービスの1つで、作成したアプリケーションを手軽に公開することができる。
特徴
・プランによっては無料で使える
・Gitコマンドで操作できる
・多様な言語・FWをサポートしている
元々はRuby向け(rails含む)のPaaSだったHerokuだが、現在では国内で扱われている主要言語とFW(以下)をほぼカバーしている。
クラウドサービスは大きく
SaaS
、PaaS
、IaaS
の3種類に大別されるが、Heroku
はこのうち、PaaS(Platform as a Service)
に分類される。
PaaS
とは、開発したWEBアプリケーションを開発・実行するための基盤(プラットフォーム)を提供するサービスを指す。
PaaS
を利用することで、それまで必要だったサーバーの購入やOS、DB、WEBサーバなどのミドルウェア類のセットアップが不要となり、開発者はインターネット越しでPaaSを操作するだけで、手軽にWEBアプリケーションのホスティングができるようになった。
手順
前提としてHeroku
への登録は済んでいるものとする
1.本番用データベースの設定
2.Heroku CLIの設定
3.RailsアプリとHerokuの紐付け
4.Herokuへのデプロイ
5.Herokuの操作(その他)
1.本番用データベースの設定
Heroku
ではPostgresと
いうデータベースが用意されており、それをrailsのデータベースとして利用することができる。
そのため、本番用のデータベースをPostgres
に設定する。
Gemfile
を以下のように修正し、本番環境でインストールするデータベース用のgemをPostgres
にする。
group :development, :test do
gem 'sqlite3', '~> 1.4' # <= 開発環境とテスト環境用として設定
end
# 本番環境用のgemグループを新しく作成しPostgresを指定
group :production do
gem 'pg'
end
Gemfile
の編集ができたら、bundle install
するが、今回新しく本番環境用のgemグループを作成したので通常とは異なる方法を使う。
ローカルでは不要な本番環境用のgemをインストールしないよう、--without production
オプションをつける。
# 本番環境用gemを除いてbundle install
$ bundle install --without production
# またbundleの設定が作成され、以降--without productionオプションが自動でつく
$ cat .bundle/config
---
BUNDLE_WITHOUT: "production"
次にconfig/database.yml
のproduction
を編集する。
# 本番用のデータベースをPostgresqlに変更する
production:
<<: *default
adapter: postgresql
encoding: unicode
pool: 5
ここまで来たら、アプリをgitの管理下に置くためコミットしておく。
2.Heroku CLIの設定
Heroku CLI
とは、さまざまなオペレーティングシステムのコマンドライン/シェルからHeroku
アプリケーションを作成および管理するためのツール。
ローカルで開発したアプリをHeroku
にデプロイするにはHeroku CLI
をインストールする必要がある。
# Heroku CLI のインストール
$ brew tap heroku/brew && brew install heroku
# バージョンが表示されればOK
$ heroku -v
heroku/7.0.0 (darwin-x64) node-v8.0.0
# このコマンドを実行することでログイン画面(ブラウザ)が開くのでログインする
$ heroku login
3.RailsアプリとHerokuの紐付け
heroku create 好きなアプリ名
と実行する。
ただしアプリ名はHeroku
内でユニークであることまた、URLとして使える名前である必要がある。
$ heroku create heroku-deploy-practiceeee
Creating ⬢ heroku-deploy-practiceeee... done
https://heroku-deploy-practiceeee.herokuapp.com/ | https://git.heroku.com/heroku-deploy-practiceeee.git
「Name is already taken...」といったメッセージが表示された場合は、
そのアプリ名は他の方に既に取られているので変更する。
4.Herokuへのデプロイ
heroku create
が成功したら、ソースコードをHeroku
にpush
する。
この時、Herokuがbundle install
やyarn install
を実行する。もし、失敗した時はログにエラーメッセージが表示される。
$ git push heroku master
push
が完了すると、ログの最後の方にアプリのURLが表示される。
remote: -----> Compressing...
remote: Done: 78.8M
remote: -----> Launching...
remote: Released v6
#ここ↓
remote: https://rheroku-deploy-practiceeee.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/heroku-deploy-practiceeee.git
* [new branch] master -> master
heroku open
を実行することでアプリ(ブラウザ)が開く。
# ブラウザが立ち上がり、アプリが表示される
$ heroku open
現時点ではエラーが出てアプリが動かないので、本番環境のデータベースでmigration
を実行する必要がある。
# データベースのmigration
$ heroku run rails db:migrate
5.Herokuの操作(その他)
# 本番環境のログを表示
$ heroku logs
# Herokuのサーバーにログイン(bash)
$ heroku run bash
# 再デプロイ(新たなコミットがある場合)
$ git push heroku master
# データベースのmigration
$ heroku run rails db:migrate
独自ドメイン化
特徴
・独自ドメインの取得には費用がかかる
・ドメインの取得とHeroku
の独自ドメイン化にはクレジットカードが必要
・SSL化(HTTPS対応)はしない(Heroku
の有料会員登録が必要なため)
現状ではhttps://作成したアプリ名.herokuapp.com
といったように、herokuapp.com
というドメインが使われている。
自分で取得したドメインを紐付けることで好きなドメインを使うことができるようなる。