新卒エンジニアが解説するRailsチュートリアル【1-4 PaaS(Heroku)にデプロイ】

 

どーも、不動産エンジニアのえびじゅん(@ebijun_re_tech)です!

本記事では、Railsチュートリアル1章より、HerokuというPaasに作成したWebアプリをデプロイしてネット上で公開する方法をご紹介します!!

知らない単語ばかりで結局何するの?って感じだと思いますが、簡単に言うと自分で作ったアプリを世界中の人が見れる状態にしちゃいます!

Railsチュートリアルの以下の部分に当たります

では、行くぞ!!

前回までのおさらい

前回はGitを用いてアプリをバージョン管理する方法をご紹介しました。

今回扱うHerokuというPaaSでも多少Gitコマンドを使うので、復習のつもりで進めてみてください。

キーワード

今回の新しく出るキーワードは以下の3つです

  • デプロイ
  • PaaS
  • Heorku
デプロイとは?

deploy:展開する. 配置する.

「アプリをデプロイする」というのは、ローカル環境で開発していたアプリをインターネット上で公開し、誰でも利用可能な状態に「展開」することです。

PaaSとは?

Platform as a serviceを略してPaaSと呼びます。
インフラ基盤はもちろん、ミドルウェアも提供してくれて、やその他リソース(DBやredis等)も呼び出せる仕組みを提供してくれるので簡単にアプリを動作させることができます。

ざっくり言うとアプリ開発に専念することができる環境を提供してくれるサービスです。

Herokuとは

PaaSの有名どころの1つです。大規模サービスをデプロイするためには料金がかかりますが、本チュートリアルで作成する規模のアプリなら無料でも利用可能です

  1. サーバPCやルータなどのハードウェアを購入
  2. インターネットに接続し、ネットワークを構築
  3. サーバの仮想化環境を整備 LinuxやWindowsサーバなどのOSをインストール
  4. Oracle、MySQL、PostgreSQLなどのデータベースをセットアップ
  5. Java、Ruby、PHPなどのアプリケーション実行環境をセットアップ

といったアプリのリリースに必要な工程を全て代行してくれます。

Herokuのセットアップ

HerokuではPostgreSQLデータベースを使います (ちなみに発音は “post-gres-cue-ell” で、よく“Postgres”と略されます)。そのためには、本番 (production) 環境にpg gemをインストールしてRailsがPostgreSQLと通信できるようにします27

ローカル環境では、SQLiteというデータベースを使っていますが、デプロイ先のHerokuにはSQliteの環境が用意されておらず、PostgreSQL(略称:ポスグレ)に対応される必要があるということです。

RailsアプリケーションのGemfileを開きまして、下記のように書き換えます

source 'https://rubygems.org'
gem 'rails',        '5.1.6'
gem 'puma',         '3.9.1'
gem 'sass-rails',   '5.0.6'
gem 'uglifier',     '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks',   '5.0.1'
gem 'jbuilder',     '2.6.4'
group :development, :test do
  gem 'sqlite3',      '1.3.13'
  gem 'byebug', '9.0.6', platform: :mri
end
group :development do
  gem 'web-console',           '3.5.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.0.2'
  gem 'spring-watcher-listen', '2.0.1'
end
# Windows環境ではtzinfo-dataというgemを含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

書き換えた部分は

group :production do
  gem 'pg', '0.20.0'
end

group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug',  '9.0.6', platform: :mri
end

です。

production(本番環境)ではpg(ポスグレ)を、development(ローカル環境)とtest(テスト環境)ではsqliteを使うという指定をします。

このようにgemを指定することで、Cloud9上ではSQLiteを、Heroku上ではポスグレを使うように自動的に切り替わります。

ではGemfileを更新したので、bundle installを実行する必要があります。しかし、今回は本番環境(produciton)のgemはいらないので、オプションでproductionグループを無視します。

bundle install --without production

bundle installが完了したら、忘れずに変更をcommitしておきましょう。

git commit -a -m "Update Gemfile for Heroku"

Herokuのセットアップ

次にHerokuのアカウントを新規作成して設定します。まずはHerokuのユーザー登録を行います。

こちらの画像を参考にアカウント情報を入力してください。

続いて、Cloud9にHerokuコマンドラインクライアントがインストールします。

source <(curl -sL https://cdn.learnenough.com/heroku_install)

インストールが完了したら、heroku --versionでherokuクライアントのバージョンを確認してみましょう。

Herokuのコマンドラインインターフェイス (CLI) がインストールされていることが確認できたら、いよいよherokuコマンドでログインしてSSHキーを追加します。

heroku login

通常ならブラウザでherokuのページが立ち上がり、半自動的にログイン処理が進みます。

が、僕の環境では「cannot open browser」と表示され、なかなかログインが進みませんでした。

そういった場合は

heroku login --interactive

と入力することで、ターミナルベースにログイン処理を進めることができます。

herokuにssh鍵を設定

ログインができたら、gitと同様にssh鍵を登録します。

heroku keys:add

と入力すると、前回作成した鍵を自動で見つけて来てくれます。

? Would you like to upload it to Heroku? (Y/n) 

と聞かれるので、y(もしくはyes)と入力してエンターを押すと登録が完了します。

herokuアプリの作成

gitでリモートリポジトリを作成したように、herokuでも受け入れ先となるherokuアプリを作成します。

heroku create

以上でherokuアプリの作成が完了です。

herokuアプリのURLと、そのアプリのgitリポジトリ(.git)がターミナルに表示されます。

herokuへデプロイ

ローカルのRailsアプリをherokuへデプロイするためには

git push heroku master

と入力します。

以上でデプロイ完了です。

先ほどheroku createを実行した際に表示されたURLを開くと、「hello world」と表示されることが確認できると思います。

エラーが出てデプロイできない場合

稀にgit push heroku masterと入力してもデプロイできず、下記エラーが表示されることがあります。

fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

原因は、heroku createした際のgitリポジトリが認識されておらず、デプロイ(push)先である「heroku」が認識されていないからです。

登録されているpush先を確認するためには、git remoteコマンドを使います。

originしか表示されない場合は、herokuが登録されていないのでデプロイに失敗します。

originとは、Bitbucketやgithubなどのリモートリポジトリを指すことが多いです。
(git remote -v コマンドでさらに詳しい情報を見ることもできます)

herokuをデプロイ先に登録する

herokuをデプロイ先に登録するためにはgit remote add "登録したい名前" "登録したいリポジトリ"コマンドを使います。

今回は登録名が「heroku」、登録したいリポジトリはheroku createした時に発行されたgitリポジトリですので

git remote add heroku https://git.heroku.com/~~~~~~~~.git

になります。~~~~~~の部分は人によって異なるので、git createの出力結果をコピペしてください。

git remoteでherokuが登録されていることが確認できたら、

git push heroku master

で改めてherokuへデプロイしてみましょう。

今回はここまでで終了です!お疲れ様でした!

1章では、以下の事柄について学びました。

  • Ruby on Railsとは、Web開発のためのフレームワークであり、Rubyプログラミング言語によって記述されている。
  • 事前設定済みのクラウド環境を利用することで、Railsのインストール、アプリケーションの生成、生成されたファイルの編集を簡単に行うことができる。
  • Railsにはrailsという名前のコマンドラインコマンドがあり、rails newで新しいアプリケーションを生成したり、rails serverでローカルサーバーを実行したりできる。
  • コントローラのアクションを追加したり、ルートルーティングを変更したりするだけで「hello, world」アプリケーションを作成できる。
  • Gitによるバージョン管理を導入し、Bitbucketの非公開リポジトリにプッシュする理由は、データの喪失を防止し、他の開発者との共同作業を行えるようにするため。
  • 作成したアプリケーションをHerokuの本番環境にデプロイした。

各節へのリンクはこちらから

  1. Railsアプリの開発環境の構築
  2. 簡単なアプリの作成
  3. Gitによるバージョン管理
  4. Herokuでアプリを公開

 

2章からは、より本格的なアプリの開発を通して、Webアプリ開発の手順を学んでいきます。

 

 

もし参考になりましたら、下記ボタンからシェアお願いします!

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください