大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

Herokuへのデプロイ

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【目次】

 

メリット

①無料基準の範囲内であれば、無期限でサービスを使い放題

AWSへのデプロイよりも簡単にできる

 

背景

今回は転職活動で使うポートフォリオを作成しようと考えており、今の自分が作れるポートフォリオレベルと転職活動後にポートフォリオの使う期間や頻度を考えると、無料期間制限がないHerokuへのデプロイをすることにしました。

 

また、スクールではAWSへのデプロイ方法を学習しましたが、たくさんのエラーに悩まされて少しの期間AWSを見たくなかったのも、Herokuを使うことに決めた要因です。

 

内容

Herokuとは? 

Herokuとは、Webアプリをインターネット上に簡単に公開してくれるサービスです。

いわゆる、「PaaS」と呼ばれるサービスに分類されます。

 

Paasとは?

PaaSは、「Platform as a Service(プラットフォーム アズ ア サービス)」の略で、Webアプリを公開するために必要なものを予め用意してくれているサービスです。

 

Webアプリを公開するには、本来であれば色々な作業が必要であり、たくさんの時間やコストがかかります。

・サーバPCなどのハードウェアの購入

・ネットワーク環境の構築

・サーバ環境の構築

・OSのインストール

・データベースの構築

・Webアプリの実行環境をセットアップ など

 

これらの作業を肩代わりしてくれるのが、「Paas」と呼ばれるサービスになります。

 

Herokuの特徴

・基本的に、1サービスであれば無料です。

・課金することで、より便利な機能が利用できます。

・面倒な手続きなくWebアプリをインターネット上に公開することができる。

 

プランは数種類ありますが、Freeプランの場合、1ヶ月毎に無料DYNO時間が与えられて、その時間内であれば無料でサービスを使うことができます。

※Daynoとは1台のサーバのようなもので、Dyno時間とはDynoが稼動している時間の合計です。

※料金プランについては、HEROKUのホームページを参照してください。

価格 | Heroku

 

HerokuでRailsアプリをデプロイする

Webアプリの設定を変更する

①トップページを表示できるページに設定する

トップページに何も設定していない場合は、「routes.rb」の設定を変更しましょう。

 

②Gemfileの「sqlite3」をコメントアウトし、「group :development, :test do ~~ end」内に「sqlite3」と「group :production do ~~ end」内に「pg」を追加する。

Gemfile

group :development, :test do
gem 'sqlite3'
end

group :production do
gem 'pg'
end

Herokuでは、最初からデータベースにpg(PostgreSQL)がインストールされているので、その環境に合うようにGemfileを変更しています。

 

③bundle installを行う

ターミナル

$ bundle install --without production

pgは自身のパソコンには入っていないので、本番環境のgemはインストールしないように、「--without production」オプションを付けています。

 

このオプションを一度打ち込むと、「BUNDLE_WITHOUT: "production"」が「.bundle/config」内に記述されるため、それ以降は「--without production」オプションを打たなくても本番環境のgemがインストールされることはありません。

 

④datebase.ymlの設定を変更する

config/database.yml

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

production:の記述では、半角スペース2個ぶんの空白を開けて記述してください。.ymlという拡張子のファイルはインデントで記述を判別しています。

 

⑤config/environments/production.rbの設定を変更する

config/environments/production.rb

config.assets.compile = true

Railsは本番環境でプリコンパイルがデフォルトでオフになっているため、動的にコンパイルするように記述を変更しました。

 

Herokuの会員登録をする

下記のサイトからHeroku会員に登録をします。クレジットカードをお持ちの方は、クレジットカード情報を登録することで、Dyno時間が加算され、無料で使える時間が増えます。

クラウド・アプリケーション・プラットフォーム | Heroku

 

自身のPCとHerokuをリンクさせるソフトウェアをインストールする

HerokuサイトのSet up画面の「Download Heroku Toolbelt for Mac OS X」を選択して、ソフトウェアをインストールします。

 

ターミナルからHerokuにログインして、デプロイをする

①Herokuにログインする

ターミナルでアップロードしたいWebアプリのディレクトリに入り、「heroku login」のコマンドを入力します。

この時に、Herokuni登録したメールアドレスとパウワードが要求されます。

ターミナル

$ heroku login

 

②HerokuのサーバとWebアプリを紐付けする 

ターミナル

$ heroku git:remote -a アプリ名

 

③HerokuのサーバにWebアプリをアップロードする

ターミナル

$ git push heroku master

 

④Herokuでマイグレーションを実行する

ターミナル

$ heroku run rails db:migrate

 

⑤発行されたURLをブラウザに入力して、Webアプリが公開されているか確認する

 

今後に向けて

前回のデプロイ先がAWSでかなりエラーに悩まされたので、今回はかなり簡単にデプロイができてびっくりしました。

AWSとHerokuのメリット・デメリット比較がしっかりとできなかったので、今後はそのあたりも調べられたらなと思っています。