logo header
logo header
logo header
logo header
  • 2014.10.15
  • 技術ブログ

HerokuでRailsアプリを公開してみよう

昨今、代表的なPaaSといえば、Heroku・Google App Engine・Windows Azureなどが挙げられると思います。皆さんは普段、どのサービスを利用されているでしょうか?

今回は、自社で購入している雑誌にHeroku特集があったのをきっかけに、
簡単なRailsアプリケーションをデプロイする所まで試してみました。

なお、手順作成および動作確認はMacで行っています。

事前準備

アプリケーション作成のためのRuby・Rails・PostgreSQLなどの他、
Herokuへのデプロイに必要なGitがインストール済であることを前提とします。

Herokuにアカウントを作成する

Herokuの公式サイトにアクセスし、画面中央の「Sign up for free」よりメールアドレス登録後、届いたメールのURLリンクより、パスワードを入力すればアカウント作成完了です。
スクリーンショット 2014-10-13 23.03.43

Heroku Toolbeltのインストール

コマンドラインからHerokuを操作するため、Heroku Toolbeltをインストールします。
上記リンクより、利用プラットフォームを選択して、インストーラをダウンロードしてください。
スクリーンショット 2014-10-13 23.15.57

Homebrewでインストールする場合は、以下のコマンドを実行します。

以下のように$ heroku --versionを実行し、インストールが完了したことを確認しましょう。

SSH公開鍵の登録

Herokuを利用する際、SSH公開鍵の登録が必要となります。
初回ログイン後に鍵を作成するか、事前に$ ssh-keygenなどで鍵を作成しておきましょう。

鍵が未登録の場合は、上記コマンドの後に登録する鍵を聞かれるので、設定しておきます。

Railsアプリケーションを作成する

Herokuにデプロイするアプリケーションを用意します。
Railsのscaffoldを利用して、簡単なユーザ管理アプリを作成しましょう。
今回、データベースはPostgreSQLを利用します。

$ rails s -dでサーバ起動後、ブラウザから「http://localhost:3000/userapps」にアクセスし、以下の画面が表示されることを確認します。
スクリーンショット 2014-10-14 23.28.55

これでアプリケーションの準備ができました。

Herokuにデプロイする

前述の手順で作成したアプリケーションを、Herokuへデプロイしていきます。

設定ファイルを作成する

RailsアプリケーションをHeroku上で動作させるため、設定ファイルを編集します。
今回は最低限必要な編集のみ加えます。

アプリケーションルートのGemfileの末尾に、以下の記述を追加します。

次に、同じディレクトリにProcfileというファイルを作成し、Herokuプラットフォーム上で実行してほしいコマンドを設定します。

RailsアプリケーションをHerokuへデプロイ

作成したアプリケーションをgit管理下に置き、$ git commitまで進めておきます。

$ heroku createでHerokuにアプリケーションを作成すると同時に、
Herokuのリモートリポジトリにpushします。

Heroku上でPostgreSQLを使用するため、アドオンの設定とマイグレーションを行います。

ここまででデプロイ作業は終了です。

ブラウザから確認

アプリケーションがHerokuに正しくデプロイされたかどうか、ブラウザから確認しましょう。

URLは$ heroku apps:info | grep "Web URL"などで確認できます。
今回はローカルでの動作確認時と同様に、URLの末尾に/userappsを追加してください。
スクリーンショット 2014-10-14 23.28.55

ローカル環境と同じ画面が表示されれば、Herokuへのデプロイ成功です!

最後に

Herokuの良いところは、$ git push heroku masterのみでアプリケーションが公開できてしまう手軽さや、サポート言語やフレームワークの広さ、基本的に無料、など様々挙げられます。

しかし、数あるPaaSの中で「絶対にHerokuがおすすめ!」とは、言い切れません。
他のサービスも試してみて、ぜひ自分に合うPaaSを見つけてみてください。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!