Herokuを使ったデプロイ方法

【結論】
・HerokuとはPaaSと呼ばれるアプリケーションを
 実行する為のプラットフォーム

AWSなどの様な複雑なセットアップ作業を経ずに、
 簡単にアプリケーションをインターネットに公開出来るサービス


【目次】


【本題】

Herokuとは

PaaSと呼ばれるアプリケーションを実行する為のプラットフォームです。

jp.heroku.com


Herokuは、本来であれば複雑な処理を行って形成するアプリケーションを
公開する為の土台(プラットフォーム)を、WEB上で提供してくれるサービスになります。

※注意※
下記は、「Rails 5.2.2」で、rails newした際に
「-d mysql」のオプションを指定したアプリで実行しています。
環境によっては、同じように動作しないかもしれないので、ご注意ください

1:Herokuのアカウント登録

まずHerokuのアカウント登録を行います。

jp.heroku.com

1:Heroku CLIのインストール

Herokuのコマンドを使える様にする為に、
下記サイトからHeroku CLIをインストールします。

The Heroku CLI | Heroku Dev Center

2:Gemfileの編集

Herokuを利用するにあたってgemfileを編集していきます

# gem 'mysql2', '>= 0.4.4', '< 0.6.0'
〜中略〜
group :development, :test do
  gem 'mysql2', '>= 0.4.4', '< 0.6.0'
end

まず、データベースに関するgem(今回はmysql2、デフォルトならsqlite3)を、
コメントアウトして、「group :development, :test do」に追加します。

これは、Herokuが「PostgreSQL」というデータベースを利用しているので、
本番環境では別のgemを読み込ませる必要があるからです。

PostgreSQL」のgemは本番環境だけ読み込めれば良いので、
下記のように追加します。

group :production do
  gem 'pg'
end

次にbundle installですが、下記のコマンドで実行します。

bundle install --without production

これは、「group :production」で指定した先ほどの
「gem 'pg'」以外のgemだけインストールする為のコマンドです。

3:database.ymlの編集

Railsではデータベースに接続する為の情報を、
config/database.yml というファイルに保存しているのですが、
デフォルトだとsqlite(今回はmysql)に適した記述になっているので、
そちらを編集します。

production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

adapter: postgresqlが、postgresqlのデータベースに接続する為の記述
encoding: unicodeが、文字コードunicodeで利用する為の記述
pool: 5が、データベースに接続出来る上限を5に制限する記述です。
※5である理由は不明だが、どのサイトも5で説明されていたのでデフォルト値?

4:config/environments/production.rbの編集

Railsの初期状態だとプリコンパイルがオフになっているので、
下記の様に設定を変えます。

config.assets.compile = true

変えていないと、デプロイ時に下記の様なエラーが発生します。

5:ターミナルからHerokuにログイン

ターミナルで下記コマンドを実行して、Herokuにログインします。

heroku login

6:アプリを登録

URLにもなるアプリ名を登録します。

heroku create mini-blogsapp

※「mini-blogapp」は任意です

↑成功
↓失敗(他に登録されている名前と重複)

7:アプリのデプロイとマイグレーション

下記のコマンドでアプリをデプロイさせます。

git push heroku master

ちなみに、リポジトリ名と先ほど設定した名前が異なると、
下記の様なエラーが出ます。

そして下記のコマンドで本番環境のマイグレーションを行います。

heroku run rake db:migrate

無事デプロイできました!