この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Herokuとは
無料のPaaS環境といえば、Google App Engine(以下GAE)が有名ですが、GAE独自のAPIや制限があるなど、 通常のWebアプリケーションと少々勝手が違います。 自動スケールなどのメリットはあるのですが、デモ用Webアプリを外からアクセスできるようにしたいなどの ちょっとした要件には対応がし辛いところがあります。そんなとき便利なのが、今回ご紹介するHerokuです。
HerokuはアメリカのPaaSベンダーで、2011年にRubyのまつもとゆきひろ氏がチーフアーキテクトに就任したことでもニュースになりました。 このHerokuは元々Ruby(RoR)のクラウドプラットフォームでしたが、最近は対応プラットフォームをどんどん拡大し、 現在はRuby/Clojure/Python/Java/JavaScript(node.js)/Scalaに対応しています。 Herokuの特徴は以下のとおりです。
- 基本無料で使用できる(拡張機能で課金)
- Gitをつかってデプロイ
- ノンベンダーロックイン
今回はHerokuのアカウント取得からデプロイまでやってみます。 なお、今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.2
- play framework : 1.2.4
- Git : 1.7.4.4
セットアップ
まずは各種登録など。
1.Herokuでアカウント登録
まずはHerokuでアカウントを登録します。 Sign upボタンを押下してメールアドレスを入力します。 メールが送られてくるので、リンクをクリックしてパスワードを設定し、登録を完了させましょう。
2.toolbeltをインストール
Getting Started with HerokuのStep 2: Install the Heroku ToolbeltからToolbeltをダウンロードして、インストール。 インストールが完了すると、コンソールでherokuコマンドが使用できます。
3.ログインと鍵作成
ssh-keygenで鍵を生成し、heroku loginコマンドを実行します。 ※すでにssh鍵を作成している場合、heroku login時にどの鍵を使用するか選択します
%ssh-keygen -t rsa
%heroku login
Enter your Heroku credentials.
Email: <メールアドレス>
Password: <パスワード>
鍵ファイルのパーミッションは600にしておかないとおこられるので、chmod 600 <鍵ファイル>としておきましょう。 また、heroku用のkeyの名前がデフォルトでない場合、~/.ssh/configファイルに下記ような指定をしてください。
Host heroku.com
User git
port 22
Hostname heroku.com
IdentityFile <Heroku用に作成したプライベートキーファイル>
TCPKeepAlive yes
IdentitiesOnly yes
4.アプリケーション作成とデプロイ
今回はplay frameworkを使用してサンプルアプリを作成しましょう。 プロジェクトを作成ます。
%play new play-heroku
%cd play-heroku/
次に、Herokuにアップロードしたファイルをどのように起動するかを記述したProcfileと呼ばれるファイルを play-herokuディレクトリ直下に作成します。 このファイルはforeman(アプリケーションのプロセスマネージャ)の設定ファイルで、ここに起動スクリプトを記述します。
web: play run --http.port=$PORT $PLAY_OPTS
play-herokuディレクトリでgit initし、ステージングとコミットします。
%git init
Initialized empty Git repository in /Users/play-heroku/.git/
%git add .
%git commit -m "init play-heroku"
[master (root-commit) 8e72a98] init play-heroku
・・・
アプリケーションの準備ができたので、Cedar Stackを作成します。
%heroku create --stack cedar
Creating xxxx-yyyyy-0000... done, stack is cedar
http://xxxx-yyyyy-0000.herokuapp.com/ | git@heroku.com:blazing-window-0000.git
Git remote heroku added
xxxx-yyyyy-0000は作成したアプリケーションのサブドメイン部分になります。
ではpushして動作を確認してみましょう。
%git push heroku master
・・・・
-----> Heroku receiving push
-----> Play! app detected
-----> WARNING: Play! version not specified in dependencies.yml. Default version: 1.2.4 being used....
-----> Installing ivysettings.xml..... done
-----> Building Play! application...
-----> Launching... done, v6
http://xxxx-yyyyy-0000.herokuapp.com deployed to Heroku
To git@heroku.com:xxxx-yyyyy-0000.git
8e72a98..3085d89 master -> master
play frameworkアプリケーションのデフォルト画面が表示されます。
まとめ
今回はHerokuでアプリケーションをデプロイして動かしてみました。 gitを使って簡単にWebアプリケーションを動かすことができたと思います。 今回作成したPlay framework(Java)以外でも基本的な流れは同じなので、お好みのプラットフォームで試してみてください。
参考サイトなど
- Heroku http://www.heroku.com/
- Facebookアプリ入門-HerokuにログインしてGitを使う- https://dev.classmethod.jp/social/facebook/facebook-heroku-open-graph/