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で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のメリット・デメリット比較がしっかりとできなかったので、今後はそのあたりも調べられたらなと思っています。