HEROKUを使って簡単にデプロイする方法

herokuでデプロイする手順

甘党エンジニアのkanjiです。

自分の開発したアプリをデプロイしてインターネット上に公開したい。ポートフォリオとして人が閲覧できる状態にしたい。
そんな時に便利なのが、Herokuだ。

Herokuとは、PaaS(Platform as a Service: アプリケーションを実行するためのプラットフォームをインターネットを介して提供するサービス)の一種だ。Herokuを使うことでレンタルサーバーを契約することなく、無料で簡単にWebサイトの立ち上げを行うことができる。

Heroku公式サイト

今回はそんなHerokuを使って、Railsアプリをデプロイする方法について書いていきたい。

流れについてはこんな感じだ。

  • STEP.1
    Railsアプリでの設定
    ・トップページの設定
    ・Gemfileの設定
    ・config/datebase.ymlの設定
    ・config/environments/production.rbの設定
  • STEP.2
    Gitの設定
    ・gitのインストール
    ・git init
    ・git add
    ・git commit
  • STEP.3
    Herokuの設定
    ・Herokuへの登録
    ・Railsアプリとの紐付け
    ・Herokuにログイン
    ・アプリケーションの作成
    ・デプロイ

Railsアプリでの設定

トップページの設定

Rails.application.routes.draw do

  resources :posts
  root  'posts#index' #トップページをblogsコントローラのindexアクションに設定

end

configフォルダの中のroutes.rb内で、トップページを設定。
(今回の場合indexに設定)

http://localhost:3000/

にアクセスして、自分の設定した何かしらのページが表示されていれば特に問題ない。次へ進む。

Gemfileの設定

Gemfileのgroup :development, :test do ~~ end内に、gem ‘sqlite3’の書き込みを行う。

group :development, :test do

 gem 'sqlite3' #do ~ end内部に追加。他のgemは残しておく。

end

もう1つ、Gemfile内に以下を追加する。

group :production do

  gem 'pg'

end
MEMO
‘pg’はPostgreSQLの略。herokuではPostgreSQというデータベースが最初からインストールされているため、その環境に合わせた変更をしている。

Gemfileを変更したのでbundle installを行う。
ただし、以下のようなオプションを指定。

$bundle install --without production
MEMO
こうすることで、group :produciton do~end内のgemは、インストール対象外となる。
自分のパソコンにはPostgreSQLは入っていないため、このようなオプションを設定する必要がある。

config/datebase.ymlの設定

本番環境でPostgreSQLを使用する設定を行うため、configフォルダの中にあるdatabase.ymlというファイルに下記を加える。

production:
#半角スペース2個分の空白を開ける
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

config/environments/production.rbの設定

Railsは、本番環境での動的な画像の表示(というかプリコンパイル)がデフォルトでオフになっている。
画像を表示するために以下の記述をfalseからtrueに変更する。

自分はこれをやっていなかったため、デプロイ時にエラーが出た。

#デフォルトでfalseとなっている以下の箇所をtrueに変更
  config.assets.compile = true

ここまででRailsの設定は終了。次はGitだ。

Gitの設定

※Gitをインストールしていない場合は先にインストール(https://git-scm.com/downloads)する。

$git init   #このフォルダをgitの紐づけを行う。

$git add -A #保存するファイルの選択。(-Aは全部)
$git commit -m "コミットメッセージ" #addしたファイルの保存

gitの準備ができれば、最後にHerokuに登録する。

Herokuの設定

Herokuへの登録

登録がまだの場合は、herokuへ登録する。https://signup.heroku.com/login

そして登録ができればherokuの機能を自分のPCに紐付けるため、cliをダウンロード。

https://devcenter.heroku.com/articles/heroku-cli

railsやgitの同じように以下のコマンドでインストールしたバージョンが出てきたら、インストールが成功しているかどうか確認できる。

$heroku --v
>>heroku/7.0.47 darwin-x64 node-v10.1.0

Railsアプリとherokuの紐づけ

PCからherokuにログインする

$heroku login

herokuに登録したemailとpasswordの入力を求められるので、支持に沿って入力。

Enter your Heroku credentials:
Email: ~~~~~@example.com  (ふっつーにherokuに登録したアドレス打ってください)
Password: **********  (ふっつーにherokuに登録したパスワード打ってください)
Logged in as ~~~~~@example.com

アプリケーションの作成

$heroku create アプリケーション名
MEMO
Herokuのサイト上からも作成可能。
アプリケーション名を指定しない場合、名前はランダムになる。

ここで作成したアプリケーションはダッシュボード一覧に載るので確認してみよう。

herokuにデプロイ

$git push heroku master

順調に進めば、これだけでデプロイ出来てしまう。

自分の指定したアプリ名を含んだURL(https://アプリ名.herokuapp.com/)が、自分のアプリのURLになる。

Herokuサイトの「Open app」からも閲覧可能。

最後に以下のコマンドで、本番環境でのDBのマイグレーションを実行する。

$heroku run rails db:migrate

更新した内容をデプロイしたい時

アプリの修正を本番環境で反映させたい場合は、下記のコマンドでデプロイできる。

$git add -A
$git commit -m "コミットメッセージ"
$git push heroku master

本番環境のログ確認

エラーが起きた場合はとりあえずこれ

$ heroku logs

過去デプロイ確認

過去のデプロイ履歴が見れる。gitでいうところの「git log」

$ heroku releases

過去デプロイ確認

v~のデプロイまで戻す(v~は↑コマンドで確認)

$ heroku rollback v~

デプロイしたアプリを24時間稼働させよう

これでHerokuに自分のアプリがデプロイできた。

しかし現状だと、URLに30分間アクセスがないと勝手にSleep状態となる。

Sleepになってしまうと次回アクセスした際にレスポンスがかなり遅くなり、15〜30秒くらい待たされてしまう。

そこでこのSleep状態を回避し、Herokuの無料枠を24時間稼働させる方法を紹介する。

詳しくはこちらの記事をご参照願いたい。

Herokuでデプロイしたアプリを24時間稼働させる方法

参考にした記事

・【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】

・【Rails/Heroku】Precompiling assets failed. への対処【プログラミング学習170日目】

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です