目的
Heroku を使うのに必要となる基本要素を一通り理解することだけを目的としています。そのため Web アプリケーションフレームワークは使いません。
この単純な Web アプリケーションの動きがわかれば、より高度な Web アプリケーションを動かす足掛かりになります。
実行するアプリケーションが1つだけであれば*1無料で試せます。
お知らせ(2013/01/24)
サンプルが動かなくなっていることに気づき修正しました。
動かなくなった正確な時期はわかりませんが、Procfile の改行コードを LF にしなければいけないようになったようです。
もし動かない場合は Procfile の改行コードが LF になっていることを確認してみてください。
サンプルファイルのダウンロード
以下のファイルをダウンロードし、解凍してみてください。
入っているのは以下の4つのファイルだけです。
Heroku は Rack という標準的インターフェイスに対応した Web アプリケーション全般をサポートします。
Rack は、Ruby の Web アプリケーションの基礎を成すもので非常にシンプルです。
高度な Web アプリケーションフレームワークである Rails や Sinatra もこの Rack に対応しています。そのため Heroku で動きます。
前提
以下の手順を踏んでサービスにアクセスできるようにしてください。既に済んでいる場合、次に進んで下さい。
- 「Heroku を始めよう!」の 1 ~ 3 を参考に、サインアップ/ツールインストール/ログインする。
- gem install heroku を実行する。
Web アプリケーションのデプロイとアクセス
Web アプリケーションを Heroku にデプロイし、アクセスするまでの一連の流れについて説明します。
以下に説明するコマンドは hello.zip を解凍したディレクトリで全て行なってください。詳細な解説は次の節で行います。
利用するライブラリのダウンロード
bundle install
Git への登録
git init git add . git commit -m "init"
Heroku にアプリケーション環境を作成
heroku create
Heroku への Web アプリケーションのデプロイ
git push heroku master
Web アプリケーションへのアクセス
heroku open
解説
利用するライブラリのダウンロード
bundle コマンドは Bundler というライブラリ(gem)管理用のツールです。
Gemfile に記載のあるライブラリをダウンロードしてくれます。また、その結果を Gemfile.lock というファイルに書きこんでくれます。
Heroku は、この Gemfile と Gemfile.lock を見て利用するライブラリをアプリケーション環境にインストールします。
Git への登録
Git とはバージョン管理システムの一種です。
他のバージョン管理システムとの大きな違いは、その作業ディレクトリ自体がリポジトリになる点です。
git init は作業ディレクトリをリポジトリにするコマンドです。
git add . でディレクトリにある全てのファイルをリポジトリ登録対象とし、git commit でファイルすべてをリポジトリに登録を実行します。
リポジトリの標準の名前には master という名前が付けられます。
コマンドを実行した後、作業フォルダに .git というフォルダが作成されていると思います。これがリポジトリの情報です。
Heroku にアプリケーション環境を作成
heroku create コマンドは Heroku 上にアプリケーション環境*2を作成するコマンドです。
作成したアプリケーション環境は、Web の管理画面*3で確認できます。
最初は適当な名前が付きますが、名前は後で変更できます。
このコマンドを実行した時点で .git/config ファイルに以下のような記述が追加されます。
[remote "heroku"] url = git@heroku.com:xxxx-xxxx-xxxx.git fetch = +refs/heads/*:refs/remotes/heroku/*
Heroku への Web アプリケーションのデプロイ
git push heroku master の heroku とは .git/config ファイルにある heroku のことでデプロイ先の Heroku リポジトリのことを指します。
master とは作業ディレクトリのリポジトリに付けられた名前のことです。
git push heroku master とは、master の内容を heroku に入れるというコマンドで、すなわちアプリケーションのデプロイという意味になります。
デプロイ時にメッセージが流れます。以下のメッセージを探して下さい。
-----> Discovering process types Procfile declares types -> web
これが Web アプリケーションの起動を表します。
Procfile とは foreman というアプリケーション起動環境用の設定ファイルです。
Heroku は Procfile を見つけると foreman を起動します。
Procfile には以下のように記述されています。
web: bundle exec rackup hello.ru -p $PORT
bundle exec とは Bundler がインストールしたライブラリ(gem)環境を使ってコマンドを起動するコマンドです。
rakeup は Rack アプリケーションを起動するコマンドです。
オプションでポートを指定していますが、そこで使っている $PORT 変数は Heroku が自動で設定してくれます。
foreman は、Heroku*4 の基本要素の1つです。
Web アプリケーションへのアクセス
heroku open でブラウザが開きます。
アプリケーションの削除
Web の管理画面で対象のアプリケーションを選んで、おもむろに Destroy App してください。
ローカルの作業フォルダは単に削除すればそれだけで大丈夫です。
試行錯誤で勉強
ここまでできたら色々と試行錯誤をして、動作がどのように変わるか試すことが簡単にできるようになります。
どんどん試行錯誤して勉強しましょう。
ローカル環境で試行錯誤
foreman は自分の環境でも動作します。
以下のページを参照してローカル環境で確認する方法も覚えれば試行錯誤が早くできるようになります。
ローカル環境での変更を Heroku への反映
何かを変更したら以下のようなコマンドを実行して下さい。Gemfile を変更した場合だけ特殊です。
- Gemfile を変更し、ライブラリを追加した場合
bundle install git add . git commit -m "変更内容の説明" git push heroku master
- その他のファイルを変更した場合
git add . git commit -m "変更内容の説明" git push heroku master
まとめ
Heroku で Web アプリケーションを動かすために必要な知識は以下の通りです。
foreman | 動かすプロセスを定義するために使います。Heroku はこれに従ってプロセスを起動します。 |
Bundler | 利用するライブラリ(gem)を定義するために使います。Heroku はこれに従い gem をインストールします。 |
Rack | Heroku がサポートする Web アプリケーションのインターフェイスです。Heroku で Web アプリケーションを動かすための前提になります。 |
Git | Heroku にアプリケーションをデプロイするために使います。 |
補足
ここで示したサンプルには冗長な部分があります。それは Procfile の存在です。
Heroku の基本要素として foreman の存在を紹介するために Procfile をサンプルに含めました。
しかし、単純に単体の Web アプリケーションを動かすだけならば Rack 用設定ファイルの名前を config.ru にすることで Heroku は自動検出して Web アプリケーションを起動してくれます。
コメント
本ページの内容に関して何かコメントがある方は、以下に記入してください。
コメントはありません。 コメント/heroku/helloheroku